package org.infosec.ismp.applet.manager.utilities; import java.awt.Color; import java.awt.Component; import java.awt.Dimension; import java.awt.Point; import java.awt.event.ActionEvent; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.awt.event.MouseMotionAdapter; import java.text.NumberFormat; import java.util.Comparator; import java.util.Iterator; import javax.swing.JComponent; import javax.swing.JInternalFrame; import javax.swing.JLabel; import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JMenuItem; import javax.swing.JOptionPane; import javax.swing.JScrollPane; import javax.swing.JTextArea; import javax.swing.JTextField; import javax.swing.SwingUtilities; import javax.swing.UIManager; import org.infosec.ismp.applet.manager.application.MainPane; import twaver.DataBoxSelectionAdapter; import twaver.DataBoxSelectionEvent; import twaver.Element; import twaver.Node; import twaver.TWaverUtil; import twaver.ZoomListener; import twaver.list.TList; import twaver.network.TNetwork; import twaver.swing.TDropDownSelector; public class AppUtil { public static JInternalFrame createInternalFrame(String title, TNetwork network, JComponent mainPane){ JInternalFrame frame = new JInternalFrame(); frame.getContentPane().add(mainPane); frame.setTitle(title); frame.pack(); frame.setLocation(30, 30); frame.setVisible(true); network.getLayeredPane().add(frame, 0); return frame; } public static JTextArea createColorTextArea(){ JTextArea textArea = new JTextArea(){ public void append(String text) { super.append(text + "\n"); this.setCaretPosition(getDocument().getLength()); } }; textArea.setEditable(false); textArea.setBackground(Color.BLACK); textArea.setForeground(Color.GREEN); return textArea; } public static JTextField createColorTextField(){ JTextField textField = new JTextField(""); textField.setOpaque(true); textField.setBackground(new Color(100, 100, 180)); textField.setForeground(Color.YELLOW); textField.setCaretColor(Color.WHITE); return textField; } public static JLabel createStatusLabel(final TNetwork network) { final JLabel label = new JLabel(); network.getCanvas().addMouseListener(new MouseAdapter() { public void mouseExited(MouseEvent e) { updateStatus(label, network, null); } }); network.getCanvas().addMouseMotionListener(new MouseMotionAdapter() { public void mouseDragged(MouseEvent e) { updateStatus(label, network, e.getPoint()); } public void mouseMoved(MouseEvent e) { updateStatus(label, network, e.getPoint()); } }); network.getZoomer().addZoomListener(new ZoomListener(){ public void zoomChanged(double oldZoom, double newZoom) { updateStatus(label, network, null); } }); return label; } public static void updateStatus(JLabel label, TNetwork network, Point point){ NumberFormat format = NumberFormat.getInstance(); format.setMaximumFractionDigits(2); double zoom = network.getZoom(); StringBuffer sb = new StringBuffer(); sb.append(" zoom=" + format.format(zoom)); if(point != null){ int x = (int) (point.getX() / zoom); int y = (int) (point.getY() / zoom); sb.append(" x=" + x + " y=" + y); } label.setText(sb.toString()); } // public static void updateDemoPanesLookAndFeel(){ // Iterator it = MainPane.box.iterator(DemoNode.class); // while(it.hasNext()){ // DemoNode demoNode = (DemoNode)it.next(); // DemoPane demoPane = demoNode.getDemoPane(); // if(demoPane != null){ // try { // SwingUtilities.updateComponentTreeUI(demoPane); // } catch (Exception ex) { // ex.printStackTrace(); // } // } // } // } public static TDropDownSelector createDropDownSelector(final MainPane mainPane, final JTextField txtSearch){ // create list final TList list = new TList(); list.setSortComparator(new Comparator(){ public int compare(Object o1, Object o2) { Element e1 = (Element)o1; Element e2 = (Element)o2; return e1.getName().compareTo(e2.getName()); } }); // create drop down selector final TDropDownSelector selector = new TDropDownSelector(txtSearch, new JScrollPane(list)){ public Dimension getSelectorSize(){ int width = this.getSize().width; if(width < 200){ width = 200; } return new Dimension(width, 320); } }; // action process list.getDataBox().getSelectionModel().addDataBoxSelectionListener(new DataBoxSelectionAdapter(){ public void selectionChanged(DataBoxSelectionEvent e) { Element element = list.getDataBox().getLastSelectedElement(); if(element == null){ txtSearch.setText(""); }else{ txtSearch.setText(element.getName()); } mainPane.selectNode(); mainPane.clearSearch(); selector.hideSelector(); } }); return selector; } public static boolean isUpperCase(char c){ return c >= 'A' && c <= 'Z'; } }