⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 messagetool.java

📁 java 开源游戏源码 RISK 联机对战 战棋类
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
							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 + -