/** * Set up a menu and tool bar * * @param pane panel to add toolbar to * @param ftree file tree display */ private JMenuBar makeMenuBar(JPanel pane, final FileTree ftree) { JMenuBar mBar = new JMenuBar(); JMenu fileMenu = new JMenu("File"); mBar.add(fileMenu); JMenuItem fileMenuGoto = new JMenuItem("Go to Directory ..."); fileMenuGoto.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent e) { String dir = ftree.getRoot().getAbsolutePath(); String newDir = JOptionPane.showInputDialog(FileManager.this, "Go to Directory:", dir); if (newDir == null) return; newDir = newDir.trim(); File newDirFile = new File(newDir); if (newDirFile.exists() && newDirFile.canRead() && !newDir.equals(dir)) ftree.newRoot(newDir); else { String error = null; if (!newDirFile.exists()) error = new String(newDir + " doesn't exist!"); else if (!newDirFile.canRead()) error = new String(newDir + " cannot be read!"); else if (newDir.equals(dir)) error = new String("Same directory!"); if (error != null) JOptionPane.showMessageDialog( FileManager.this, error, "Warning", JOptionPane.WARNING_MESSAGE); } } }); fileMenu.add(fileMenuGoto); fileMenu.add(new JSeparator()); JMenuItem fileMenuClose = new JMenuItem("Close"); fileMenuClose.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent e) { setVisible(false); } }); fileMenu.add(fileMenuClose); // tool bar set up JToolBar toolBar = new JToolBar(); Dimension buttonSize = new Dimension(22, 24); JButton upBt = new JButton() { public void paintComponent(Graphics g) { super.paintComponent(g); Graphics2D g2 = (Graphics2D) g; g2.setColor(new Color(0, 128, 0)); float loc1[][] = {{11, 18}, {7, 18}, {7, 14}, {3, 14}, {11, 4}}; g2.fill(makeShape(loc1)); g2.setColor(Color.green); float loc2[][] = {{11, 18}, {15, 18}, {15, 14}, {19, 14}, {11, 4}}; g2.fill(makeShape(loc2)); setSize(22, 24); } }; upBt.setPreferredSize(buttonSize); upBt.setMinimumSize(buttonSize); upBt.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent e) { FileManager.this.setCursor(cbusy); File root = ftree.getRoot(); String parent = root.getParent(); if (parent != null) ftree.newRoot(parent); FileManager.this.setCursor(cdone); } }); toolBar.add(upBt); // yeastpub JButton shortCut1 = new JButton() { public void paintComponent(Graphics g) { super.paintComponent(g); Graphics2D g2 = (Graphics2D) g; Font font = new Font("Monospaced", Font.BOLD, 14); g2.setFont(font); g2.setColor(Color.black); g2.drawString("Y", 4, 18); g2.setColor(Color.red); g2.drawString("P", 10, 15); setSize(22, 24); } }; shortCut1.setPreferredSize(buttonSize); shortCut1.setMinimumSize(buttonSize); shortCut1.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent e) { ftree.newRoot("/nfs/disk222/yeastpub"); } }); if ((new File("/nfs/disk222/yeastpub")).exists()) toolBar.add(shortCut1); // pathdata JButton shortCut2 = new JButton() { public void paintComponent(Graphics g) { super.paintComponent(g); Graphics2D g2 = (Graphics2D) g; Font font = new Font("Monospaced", Font.BOLD, 14); g2.setFont(font); g2.setColor(Color.black); g2.drawString("P", 4, 18); g2.setColor(Color.red); g2.drawString("D", 10, 15); setSize(22, 24); } }; shortCut2.setPreferredSize(buttonSize); shortCut2.setMinimumSize(buttonSize); shortCut2.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent e) { ftree.newRoot("/nfs/pathdata/"); } }); if ((new File("/nfs/pathdata/")).exists()) toolBar.add(shortCut2); // home button JButton homeBt = new JButton() { public void paintComponent(Graphics g) { super.paintComponent(g); Graphics2D g2 = (Graphics2D) g; g2.setColor(Color.blue); float loc1[][] = {{3, 14}, {11, 3}, {19, 14}, {17, 14}, {17, 18}, {5, 18}, {5, 14}}; g2.fill(makeShape(loc1)); setSize(22, 24); } }; homeBt.setPreferredSize(buttonSize); homeBt.setMinimumSize(buttonSize); homeBt.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent e) { ftree.newRoot(System.getProperty("user.home")); } }); toolBar.add(homeBt); toolBar.add(Box.createVerticalStrut(35)); pane.add(toolBar, BorderLayout.NORTH); return mBar; }