📄 messagetool.java
字号:
doFilter();
}
catch(Exception e) {
showError("unable to search: "+e.getMessage());
e.printStackTrace();
status.setText("Ready");
}
find.setEnabled(true);
searching=false;
}
}.start();
}
}
else if (ae.getActionCommand().equals("go")) {
String name = ((JTextComponent)address.getEditor().getEditorComponent()).getText(); //address.getSelectedItem().toString();
if (name=="" || mycomm==null) { return; }
MyNode node=null;
try {
node = getNode(name);
}
catch(Exception e) {
showError("error finding node: "+e.getMessage());
return;
}
if (node==null) {
int result = JOptionPane.showConfirmDialog(this,"do you want to add: "+name,"confirm add",JOptionPane.YES_NO_OPTION );
if (result == JOptionPane.YES_OPTION) {
addNode( name );
}
}
else {
TreePath treepath = new TreePath(node.getPath());
tree.setSelectionPath( treepath );
tree.scrollPathToVisible(treepath);
// showMessage(node); // this happens anyway when tree is updated
}
}
else if (ae.getActionCommand().equals("locale")) {
if ( checkChange() ) {
local.setSelectedItem( currentlocale );
return;
}
setLocale( (Locale)local.getSelectedItem() );
}
else if (ae.getActionCommand().equals("wrap")) {
doublePanel.setWrap( wrap.isSelected() );
}
else if (ae.getActionCommand().equals("save message")) {
saveChanges();
}
else if (ae.getActionCommand().equals("revert")) {
if (message!=null) { doublePanel.revert(); }
}
else if (ae.getActionCommand().equals("filter")) {
doFilter();
}
else {
System.out.println( ae.getActionCommand() );
}
}
public void setLocale(Locale l) {
currentlocale = l;
try {
if (message!=null) { doublePanel.resetLocale( currentlocale ); }
((MyNode)tree.getModel().getRoot()).nodeWorkRefresh(mycomm,currentlocale);
tree.repaint();
}
catch(Exception e) {
showError( "unable to setup locale: "+e.getMessage() );
}
}
private void doFilter() {
if (fullResults!=null) {
Result[] res = filter(fullResults);
Arrays.sort(res,CASE_INSENSITIVE_ORDER);
results.setListData( res );
status.setText("Found "+res.length+" results");
}
}
private Result[] filter(Result[] res) {
Vector v = new Vector();
for (int c=0;c<res.length;c++) {
if (
(filter1.getSelectedIndex()==0 || filter1.getSelectedItem()==res[c].locale || ( res[c].locale !=null && res[c].locale.equals( filter1.getSelectedItem() )) )
) {
v.add(res[c]);
}
}
return (Result[])v.toArray(new Result[v.size()]);
}
public void valueChanged(ListSelectionEvent lse) {
if (!lse.getValueIsAdjusting()) {
Result r = (Result)results.getSelectedValue();
if (r!=null) {
MyNode node=null;
try {
node = getNode( r.node );
if (node==null) { throw new Exception("null"); }
}
catch(Exception e) {
showError("error finding node: "+e.getMessage());
return;
}
TreePath treepath = new TreePath(node.getPath());
tree.setSelectionPath( treepath );
tree.scrollPathToVisible(treepath);
if (r.locale!=null) { local.setSelectedItem( r.locale ); }
}
}
}
public void exit() { // yura@todo: this needs to be called
if ( !checkChange() ) {
System.exit(0);
}
}
public void showError(String s) {
JOptionPane.showMessageDialog(this, s, "Error", JOptionPane.ERROR_MESSAGE);
}
public void addNode(String name) {
//YURA:TODO put in more checks here
if (name.equals("") || name.charAt(0)=='.' || name.charAt(name.length()-1)=='.'|| name.indexOf("..")!=-1) {
showError( "unable to create message\nbad name: "+name );
}
else {
try {
MyNode newnode = addNode(name, (MyNode) tree.getModel().getRoot() );
TreePath treepath = new TreePath(newnode.getPath());
tree.setSelectionPath( treepath );
tree.scrollPathToVisible(treepath);
// not needed as message is only updated when saved
//mycomm.addNode( newnode );
}
catch(Exception e) {
showError("unable to create node: "+e.getMessage() );
}
}
}
public MyNode addNode(String s,MyNode n) throws Exception {
n.loadChildren(mycomm,currentlocale);
if (s.indexOf('.')==-1) {
Enumeration en = n.children();
MyNode exists=null;
while (en.hasMoreElements()) {
MyNode node = (MyNode)en.nextElement();
if ( node.getUserObject().equals(s) ) {
if ( node.hasMessage() ) {
throw new Exception("node already exists");
}
else {
exists=node;
node.setHasMessage(true);
}
}
}
if (exists==null) {
MyNode node = new MyNode(s,true);
n.add(node);
//((DefaultTreeModel)tree.getModel()).insertNodeInto(node,n,0);
exists = node;
}
((DefaultTreeModel)tree.getModel()).reload(n);
return exists;
}
else {
// split the name up
String name = s.substring(0, s.indexOf('.')); // things b4 first dot
String name2 = s.substring(s.indexOf('.')+1,s.length()); // things after first dot
Enumeration en = n.children();
while (en.hasMoreElements()) {
MyNode node = (MyNode)en.nextElement();
if ( node.getUserObject().equals(name) ) {
node.setHasChildren(true);
return addNode( name2 ,node);
}
}
MyNode node = new MyNode(name,false);
n.add(node);
((DefaultTreeModel)tree.getModel()).reload(n);
//((DefaultTreeModel)tree.getModel()).insertNodeInto(node,n,0);
return addNode( name2 ,node);
}
}
public MyNode getNode(String name) throws Exception {
String[] names = name.split("\\.");
MyNode node = (MyNode) tree.getModel().getRoot();
for (int c=0; c < names.length; c++) {
if (names[c]=="") { return null; }
node.loadChildren(mycomm,currentlocale);
node = node.getChild(names[c]);
if (node==null) { return null; }
}
return node;
}
public void load() {
try {
Mtcomm mycomm1 = mycomm;
if (mycomm1==null) {
mycomm1 = new RiskComm();
}
if (mycomm1.load()) {
Locale[] locales = mycomm1.getLocales();
Locale defaultLocale = locales[0];
if (locales==null || locales.length==0 ) {
throw new Exception("unable to get info from plugin");
}
fullResults=null;
MyNode root = new MyNode("ROOT",false,true);
root.loadChildren(mycomm1,defaultLocale);
((DefaultTreeModel)tree.getModel()).setRoot( root );
doublePanel.setVisible(false);
address.removeAllItems();
message=null;
local.setModel( new DefaultComboBoxModel( locales ) );
results.setListData( new Object[] { } );
filter1.setModel( new DefaultComboBoxModel( locales ) );
filter1.insertItemAt("ALL",0);
filter1.insertItemAt( null ,1);
filter1.setSelectedIndex(0);
mycomm = mycomm1;
setLocale(defaultLocale);
status.setText("Ready");
}
}
catch(Exception ex) {
showError( ex.toString() );
}
}
class MyRenderer extends DefaultTreeCellRenderer {
ImageIcon fc;
ImageIcon fcm;
ImageIcon fo;
ImageIcon fom;
ImageIcon m;
ImageIcon fc_E;
ImageIcon fcm_E;
ImageIcon fo_E;
ImageIcon fom_E;
ImageIcon m_E;
ImageIcon w;
public MyRenderer() {
fc = new ImageIcon( this.getClass().getResource("fc.gif") );
fcm = new ImageIcon( this.getClass().getResource("fcm.gif") );
fo = new ImageIcon( this.getClass().getResource("fo.gif") );
fom = new ImageIcon( this.getClass().getResource("fom.gif") );
m = new ImageIcon( this.getClass().getResource("m.gif") );
w = new ImageIcon( this.getClass().getResource("work.png") );
fc_E = paintDot(fc);
fcm_E = paintDot(fcm);
fo_E = paintDot(fo);
fom_E = paintDot(fom);
m_E = paintDot(m);
}
private ImageIcon paintDot(ImageIcon a) {
int s = 5;
BufferedImage b = new BufferedImage(a.getIconWidth(),a.getIconHeight(),BufferedImage.TYPE_INT_ARGB);
Graphics g = b.getGraphics();
g.drawImage(a.getImage(),0,0,this);
//g.setColor(Color.RED);
//g.fillOval(b.getWidth()-s,b.getHeight()-s,s,s);
g.drawImage(w.getImage(),0,0,this);
g.dispose();
return new ImageIcon(b);
}
public Component getTreeCellRendererComponent(
JTree tree,
Object value,
boolean sel,
boolean expanded,
boolean leaf,
int row,
boolean hasFocus) {
super.getTreeCellRendererComponent(
tree, value, sel,
expanded, leaf, row,
hasFocus);
MyNode node = (MyNode)value;
boolean wn = node.workNeeded();
if ( leaf && node.hasMessage()) {
setIcon(wn?m_E:m);
}
else if (expanded && node.hasMessage()) {
setIcon(wn?fom_E:fom);
}
else if (!expanded && node.hasMessage()) {
setIcon(wn?fcm_E:fcm);
}
else if (expanded && !node.hasMessage()) {
setIcon(wn?fo_E:fo);
}
else { // if (!expanded && !node.hasMessage()) {
setIcon(wn?fc_E:fc);
}
return this;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -