罫線の出る monsiaj
monsiaj-20100304 をちょっと改造。
« 2010年1月 | トップページ | 2010年3月 »
monsiaj-20100304 をちょっと改造。
スタンプエディターで,左矢印でスタンプを取り込んで編集した後,右矢印でスタンプ箱に戻すと,スタンプの一番下に加えられる。これを,カーソルがある位置のすぐ下に挿入するようにした。
class EditorValueListener implements PropertyChangeListener {
・
・
public void propertyChange(PropertyChangeEvent e) {
Object obj = e.getNewValue();
//pns^
StampTreeNode targetNode;
if (e.getOldValue() instanceof StampTreeNode) {
targetNode = (StampTreeNode) e.getOldValue();
} else {
targetNode = null;
}
//pns$
if (obj != null && obj instanceof ModuleModel) {
ModuleModel stamp = (ModuleModel) obj;
String entity = stamp.getModuleInfo().getEntity();
StampTree tree = userBox.getStampTree(entity);
//pns^
// tree.addStamp(stamp, null);
((StampTreeTransferHandler)tree.getTransferHandler()).setPosition(StampTreeTransferHandler.Insert.AFTER);
tree.addStamp(stamp, targetNode);
//pns$
} else if (obj != null && obj instanceof ArrayList) {
・
・
public void setEditorValue(Object value) {
editorValue = value;
//pns boundSupport.firePropertyChange(IStampEditorDialog.EDITOR_VALUE_PROP, null, editorValue);
boundSupport.firePropertyChange(IStampEditorDialog.EDITOR_VALUE_PROP, getSelectedNode(), editorValue);
curEditor.setValue(null);
}
コードヘルパーという機能があって,例えば tx と入力して直後に「修飾キー+スペース」と押すとテキストスタンプのポップアップが出現して入力できるらしいのだが,どうもうまく動かなかった。調べてみたところ,Spotlight のショートカットとぶつかってしまっていたようだった。そこで,キーを「修飾キー+リターン」に変更したら動いた。これは結構便利かもしれない。
public AbstractCodeHelper(KartePane kartePane, ChartMediator mediator) {
・
・
this.textPane.addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent e) {
// if ((e.getModifiersEx() == MODIFIER) && e.getKeyCode() == KeyEvent.VK_SPACE) {
if ((e.getModifiersEx() == MODIFIER) && e.getKeyCode() == KeyEvent.VK_ENTER) {
buildAndShowPopup();
}
}
});
root@orca # su - lp lp@orca $ echo $HOME (lp のホームディレクトリを確認) /var/spool/lpd lp@orca $ exit root@orca # mkdir /var/spool/lpd/.ssh root@orca # cp 秘密鍵 /var/spool/lpd/.ssh (秘密鍵の設定) root@orca # chmod 600 /var/spool/lpd/.ssh/秘密鍵 root@orca # chown -R lp:lp /var/spool/lpd/.ssh (.ssh ディレクトリを lp がアクセスできるように設定) root@orca # sudo -u lp slogin -i .ssh/秘密鍵 user@backup-machine The authenticity of host '[backup-machine]: ([192.168.1.xxx]:22)' can't be established. RSA key fingerprint is 5b:46:eb:d1:b8:f9:8f:f7:71:95:0a:11:6d:58:a6:dc. Are you sure you want to continue connecting (yes/no)? yes Linux backup 2.6.18-6-686 #1 SMP Tue Jun 17 21:31:27 UTC 2008 i686 The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. Last login: Fri Aug 22 05:11:42 2008 from 192.168.1.xxx backup@backup-machine $
#!/bin/sh # # lp が書き込みできるディレクトリ,何でもいい PDFDIR=/var/spool/cups-pdf/ANONYMOUS # pdf ファイルの名前 PDFNAME=`date +%Y%m%d-%H%M%S` # ps ファイルを pdf に変換するコマンド PS2PDF="/usr/bin/ps2pdf -sPAPERSIZE=a5" # pdf ファイルをコピーするマシン BACKUPDIR="backup@backup-machine:pdf" # 公開鍵認証 KEY=/var/spool/lpd/.ssh/秘密鍵 # ここの設定が,cups でプリンタ登録する際にデバイス欄に現れる # pdf1 のところを pdf2 などとして別ファイルを作ればプリンタを増やせる if [ $# -eq 0 ]; then echo "direct pdf1:/ \"customized backend\" \"PDF Writing\"" exit 0 fi # まず,実際の印刷処理を行う lp -d lp1 $6 (領収書,処方箋は lp1 で印刷している) # ps ファイルを pdf に変換 $PS2PDF $6 $PDFDIR/$PDFNAME.pdf chmod 666 $PDFDIR/$PDFNAME.pdf # 出来上がった pdf をバックアップマシンに転送 scp -i $KEY $PDFDIR/$PDFNAME.pdf $BACKUPDIR # 転送終了後消去 rm $PDFDIR/$PDFNAME.pdf exit 0
スタンプ箱のラベルを編集するのに,オリジナルでは右クリックから「名称変更」を選ぶようになっている。DefaultTreeCellEditor を組み込むと,右クリックを使わなくても,マウスをトリプルクリックするか,マウスクリックを休止をはさんで 2 回行なって 1200 ミリ秒待つと編集が開始されるようになる。これをスタンプ箱に組み込んだ。ついでに,1200 ミリ秒を少し短くした。
public StampTree(TreeModel model) {
・
・
// TreeCellEditor セット
this.setEditable(true);
this.setCellEditor(new MyDefaultTreeCellEditor(this, renderer));
package open.dolphin.ui;
import java.util.EventObject;
import javax.swing.DefaultCellEditor;
import javax.swing.JTree;
import javax.swing.Timer;
import javax.swing.tree.DefaultTreeCellEditor;
import javax.swing.tree.DefaultTreeCellRenderer;
import javax.swing.tree.TreeCellEditor;
/**
* TreeCellEditor
* @author pns
*/
public class MyDefaultTreeCellEditor extends DefaultTreeCellEditor {
public MyDefaultTreeCellEditor(JTree tree, DefaultTreeCellRenderer renderer) {
super(tree, renderer);
realEditor = this.createTreeCellEditor();
}
@Override
protected TreeCellEditor createTreeCellEditor() {
DefaultTextField textField = new DefaultTextField(BorderFactory.createLineBorder(Color.blue));
textField.setOpaque(true); // これをしないと,編集時のバックグランドが白くならない
DefaultCellEditor editor = new DefaultCellEditor(textField) {
@Override
public boolean shouldSelectCell(EventObject event) {
boolean retValue = super.shouldSelectCell(event);
return retValue;
}
};
// One click to edit.
editor.setClickCountToStart(1);
return editor;
}
/**
* 編集が始まるまでの delay を早くした(デフォルトは 1200 msec)
*/
@Override
protected void startEditingTimer() {
if(timer == null) {
timer = new Timer(900, this);
timer.setRepeats(false);
}
timer.start();
}
}