/** * Create a button for a tool bar * * @param editor the associated editor * @param title tooltip for the button * @return the button */ public static JButton createButton(SwingScilabVariableEditor editor, String title) { JButton button = new JButton(); ScilabLAF.setDefaultProperties(button); button.addActionListener(new SetPrecisionLongAction(editor, title)); button.setToolTipText(title); ImageIcon imageIcon = new ImageIcon(FindIconHelper.findIcon("long")); button.setIcon(imageIcon); return button; }
public void setIconAt(int index, String iconFile) { try { File file = new File(iconFile); if (file.exists() == false) { String filename = FindIconHelper.findImage(iconFile); file = new File(filename); } JLabel label = (JLabel) getTabComponentAt(index); if (label != null) { label.setIcon(new ImageIcon(ImageIO.read(file))); } } catch (IOException e) { super.setIconAt(index, null); } }
/** * The File Browser history * * @author Calixte DENIZET */ @SuppressWarnings(value = {"serial"}) public class ScilabFileBrowserHistory { private static final String PREVIOUSICON = FindIconHelper.findIcon("go-previous"); private static final String NEXTICON = FindIconHelper.findIcon("go-next"); private final SwingScilabTreeTable stt; private final List<String> history = new ArrayList<String>(); private int position = -1; private final JButton previous; private final JButton next; private final JPopupMenu popup; private Timer timer; /** * Default constructor * * @param stt the treetable associated with this history */ public ScilabFileBrowserHistory(SwingScilabTreeTable stt) { this.stt = stt; this.popup = new JPopupMenu(); this.popup.setBorderPainted(true); previous = new JButton(); previous.setIcon(new ImageIcon(PREVIOUSICON)); ScilabLAF.setDefaultProperties(previous); previous.setToolTipText(UiDataMessages.PREVIOUSDIR); previous.addMouseListener( new MouseAdapter() { @Override public void mousePressed(MouseEvent e) { if (timer == null) { timer = new Timer(); timer.schedule( new TimerTask() { @Override public void run() { if (!popup.isVisible() || popup.getInvoker() != next) { showPopup(true); } } }, 1000); } } @Override public void mouseReleased(MouseEvent e) { if (timer != null) { timer.cancel(); timer = null; } } @Override public void mouseClicked(MouseEvent e) { if (SwingUtilities.isRightMouseButton(e) && previous.isEnabled() && (!popup.isVisible() || popup.getInvoker() != previous)) { showPopup(true); } else if (SwingUtilities.isLeftMouseButton(e) && !popup.isVisible() && previous.isEnabled()) { ScilabFileBrowserHistory.this.stt.setBaseDir(history.get(position - 1), false); chDir(history.get(position - 1)); setPositionInHistory(position - 1); } } }); next = new JButton(); next.setIcon(new ImageIcon(NEXTICON)); ScilabLAF.setDefaultProperties(next); next.setToolTipText(UiDataMessages.NEXTDIR); next.addMouseListener( new MouseAdapter() { @Override public void mousePressed(MouseEvent e) { if (timer == null) { timer = new Timer(); timer.schedule( new TimerTask() { @Override public void run() { if (!popup.isVisible() || popup.getInvoker() != next) { showPopup(false); } } }, 1000); } } @Override public void mouseReleased(MouseEvent e) { if (timer != null) { timer.cancel(); timer = null; } } @Override public void mouseClicked(MouseEvent e) { if (SwingUtilities.isRightMouseButton(e) && next.isEnabled() && (!popup.isVisible() || popup.getInvoker() != next)) { showPopup(false); } else if (SwingUtilities.isLeftMouseButton(e) && !popup.isVisible() && next.isEnabled()) { ScilabFileBrowserHistory.this.stt.setBaseDir(history.get(position + 1), false); chDir(history.get(position + 1)); setPositionInHistory(position + 1); } } }); updateButton(0); } /** * Show the popup under the button * * @param prev if true, the popup is show under the previous button */ private void showPopup(boolean prev) { popup.removeAll(); if (prev) { for (int i = position - 1; i >= 0; i--) { JMenuItem item = new JMenuItem(history.get(i)); final int j = i; item.addActionListener( new CommonCallBack(null) { @Override public void callBack() { ScilabFileBrowserHistory.this.stt.setBaseDir(history.get(j), false); chDir(history.get(j)); setPositionInHistory(j); } }); popup.add(item); } } else { for (int i = position + 1; i < history.size(); i++) { JMenuItem item = new JMenuItem(history.get(i)); final int j = i; item.addActionListener( new CommonCallBack(null) { @Override public void callBack() { ScilabFileBrowserHistory.this.stt.setBaseDir(history.get(j), false); chDir(history.get(j)); setPositionInHistory(j); } }); popup.add(item); } } popup.pack(); JButton button; if (prev) { button = previous; } else { button = next; } popup.show(button, 0, button.getBounds(null).height); } private static final void chDir(String path) { File f = new File(path); if (f.exists() && f.isDirectory() && f.canRead()) { InterpreterManagement.requestScilabExec("chdir('" + path + "')"); } } /** * Add a path in the history * * @param path the path to add */ public void addPathInHistory(String path) { history.add(path); setPositionInHistory(position + 1); } /** @return the previous button */ public JButton getPreviousButton() { return previous; } /** @return the next button */ public JButton getNextButton() { return next; } /** * Set the current position in the history * * @param pos the new position */ private void setPositionInHistory(int pos) { position = pos; updateButton(pos); } /** * Update the buttons state according to the position * * @param pos the position */ private void updateButton(int pos) { previous.setEnabled(history.size() >= 2 && pos != 0); next.setEnabled(history.size() >= 2 && pos != history.size() - 1); } }