« Mac のメニューバー | トップページ | Java 1.6対応 »

2009年3月12日 (木)

スタンプ入れ替えロック

Stampbox スタンプボックスの項目は,ドラッグアンドドロップで順番を入れ替えることができるが,カルテ入力で操作しているうちに操作ミスで知らずに順番を変えてしまって,いつものところにスタンプがなくて探すのに時間がかかることがあった。そこで,順番入れ替えは通常はロックしておき,必要なときだけロック解除して入れ替えることにした。

ロックしていてもカルテとのドラッグアンドドロップはできるので,普段はロックしておき,順番入れ替えの必要が生じたときのみロック解除して操作する。

client/StampTreePanel.java の編集

public StampTreePanel(StampTree tree) {
 ・
 ・
  if (treeEntity != null && (!treeEntity.equals(IInfoModel.ENTITY_TEXT))) {
    infoArea = new JTextArea();
    infoArea.setMargin(new Insets(3, 2, 3, 2));
    infoArea.setLineWrap(true);
    infoArea.setPreferredSize(new Dimension(250, 40));
    Font font = GUIFactory.createSmallFont();
    infoArea.setFont(font);

////↓ロックボタンを付ける
    final JToggleButton lockBtn = new JToggleButton();
    lockBtn.setIcon(new ImageIcon(getClass().getResource("/open/dolphin/resources/images/lockOn.gif")));
    lockBtn.setSelectedIcon(new ImageIcon(getClass().getResource("/open/dolphin/resources/images/lockOff.gif")));
    lockBtn.setBorder(javax.swing.BorderFactory.createEmptyBorder(1, 1, 1, 1));
    lockBtn.setMaximumSize(new java.awt.Dimension(32, 32));
    lockBtn.setMinimumSize(new java.awt.Dimension(32, 32));
    lockBtn.setPreferredSize(new java.awt.Dimension(32, 32));
    lockBtn.setToolTipText("ツリー内での入れ替えをロックします");

    lockBtn.addActionListener(new ActionListener() {
       public void actionPerformed(ActionEvent e) {
         if (lockBtn.isSelected()) { // 選択されていたらロック解除
             stampTree.setLocked(false);
         } else stampTree.setLocked(true);
       }
    });
            
    JPanel infoPanel = new JPanel();
    infoPanel.setLayout(new BorderLayout());
    infoPanel.add(infoArea, BorderLayout.CENTER);
    infoPanel.add(lockBtn, BorderLayout.EAST);
            
    this.add(infoPanel, BorderLayout.SOUTH);
    // this.add(infoArea, BorderLayout.SOUTH);
////↑

client/StampTree.java の編集

////↓ ツリー入れ替えロック用
public boolean isLocked() {
  return isLocked;
}
public void setLocked(boolean locked) {
  isLocked = locked;
}
////↑

client/StampTreeTransferHandler.java の編集

// ツリー入れ替えロック用
private boolean isLocked;
  public boolean isLocked() {
    return isLocked;
}
public void setLocked(boolean locked) {
  isLocked = locked;
}
// FlavorがStampTreeNodeの時
// StampTree 内の DnD
//
////↓スタンプ入れ替えが lock されていたら StampTree 内の DnD を禁止
if (tr.isDataFlavorSupported(stampTreeNodeFlavor) && (selected != null) && !isLocked) {
////↑
//if (tr.isDataFlavorSupported(stampTreeNodeFlavor) && (selected != null)) {

« Mac のメニューバー | トップページ | Java 1.6対応 »

OpenDolphin」カテゴリの記事