X-Git-Url: http://www2.svjatoslav.eu/gitweb/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Feu%2Fsvjatoslav%2Finstantlauncher%2Fmenu%2FMenu.java;h=916f8efa1b23ac4bcf4359f30ac6a05959351eae;hb=6cb42e79508ca427f08e17af6084b1dd87f318cd;hp=948672a3a4ff805f2e33c83926a76fb9da768165;hpb=8e3d8292673f5fc9c0611f419d7425c8fe151ca8;p=instantlauncher.git
diff --git a/src/main/java/eu/svjatoslav/instantlauncher/menu/Menu.java b/src/main/java/eu/svjatoslav/instantlauncher/menu/Menu.java
index 948672a..916f8ef 100755
--- a/src/main/java/eu/svjatoslav/instantlauncher/menu/Menu.java
+++ b/src/main/java/eu/svjatoslav/instantlauncher/menu/Menu.java
@@ -22,216 +22,223 @@ import eu.svjatoslav.instantlauncher.Utils;
public class Menu {
- public static class ButtonMouseListener implements MouseListener {
-
- JButton parentButton;
- Menu parentMenu;
- File file;
-
- public ButtonMouseListener(final JButton button, final Menu parentMenu, final File file) {
- parentButton = button;
- this.parentMenu = parentMenu;
- this.file = file;
- }
-
- @Override
- public void mouseClicked(final MouseEvent e) {
- try {
-
- if (e.getButton() == 1)
- parentMenu.menuItemSelected(file);
- if (e.getButton() == 3)
- parentMenu.menuItemSelectedAlternative(file);
- } catch (final Exception ex) {
- new ExceptionDialog(ex);
- }
- }
-
- @Override
- public void mouseEntered(final MouseEvent e) {
- try {
- if (parentButton != parentMenu.getSelectedButton()) {
-
- if (parentMenu.getSelectedButton() != null)
- parentMenu.getSelectedButton().setBackground(getFileColor(parentMenu.getSelectedFile(), false));
-
- parentMenu.setSelected(parentButton, file);
- parentButton.setBackground(getFileColor(file, true));
-
- parentMenu.menuItemHighlighted(file);
- }
- } catch (final Exception ex) {
- new ExceptionDialog(ex);
- }
- }
-
- @Override
- public void mouseExited(final MouseEvent e) {
- }
+ public static class ButtonMouseListener implements MouseListener {
+
+ JButton parentButton;
+ Menu parentMenu;
+ File file;
+
+ public ButtonMouseListener(final JButton button, final Menu parentMenu, final File file) {
+ parentButton = button;
+ this.parentMenu = parentMenu;
+ this.file = file;
+ }
+
+ @Override
+ public void mouseClicked(final MouseEvent e) {
+ try {
+
+ if (e.getButton() == 1)
+ parentMenu.menuItemSelected(file);
+ if (e.getButton() == 2)
+ parentMenu.menuItemSelectedAlternative2(file);
+ if (e.getButton() == 3)
+ parentMenu.menuItemSelectedAlternative(file);
+ } catch (final Exception ex) {
+ new ExceptionDialog(ex);
+ }
+ }
+
+ @Override
+ public void mouseEntered(final MouseEvent e) {
+ try {
+ if (parentButton != parentMenu.getSelectedButton()) {
+
+ if (parentMenu.getSelectedButton() != null)
+ parentMenu.getSelectedButton().setBackground(getFileColor(parentMenu.getSelectedFile(), false));
+
+ parentMenu.setSelected(parentButton, file);
+ parentButton.setBackground(getFileColor(file, true));
+
+ parentMenu.menuItemHighlighted(file);
+ }
+ } catch (final Exception ex) {
+ new ExceptionDialog(ex);
+ }
+ }
+
+ @Override
+ public void mouseExited(final MouseEvent e) {
+ }
+
+ @Override
+ public void mousePressed(final MouseEvent e) {
+ }
+
+ @Override
+ public void mouseReleased(final MouseEvent e) {
+ }
- @Override
- public void mousePressed(final MouseEvent e) {
- }
+ }
- @Override
- public void mouseReleased(final MouseEvent e) {
- }
+ public static final Color BUTTON_BG_DIRECTORY = new Color(0, 0, 60);
+
+ public static final Color BUTTON_BG_DIRECTORY_SELECTED = new Color(0, 0, 100);
+ public static final Color BUTTON_BG_LINK = new Color(60, 60, 0);
+
+ public static final Color BUTTON_BG_LINK_SELECTED = new Color(100, 100, 0);
+ public static final Color BUTTON_BG_EXECUTABLE_FILE = new Color(60, 0, 0);
+
+ public static final Color BUTTON_BG_EXECUTABLE_FILE_SELECTED = new Color(100, 0, 0);
+ public static final Color BUTTON_BG_NONEXECUTABLE_FILE = new Color(0, 60, 0);
+
+ public static final Color BUTTON_BG_NONEXECUTABLE_FILE_SELECTED = new Color(0, 100, 0);
+ public static final Dimension SIZE_BUTTON = new Dimension(200, 30);
+
+ public static final Dimension SIZE_MENU_PANEL = new Dimension(210, 900);
+
+ /**
+ *
+ * Assign specific colors to:
+ * Directory
+ * Executable file
+ * Non executable file
+ *
+ */
+ public static Color getFileColor(final File file, final boolean selected) {
+ if (file.isDirectory())
+ if (selected)
+ return BUTTON_BG_DIRECTORY_SELECTED;
+ else
+ return BUTTON_BG_DIRECTORY;
+
+ if (file.isFile())
+ if (file.canExecute()) {
+ if (selected)
+ return BUTTON_BG_EXECUTABLE_FILE_SELECTED;
+ else
+ return BUTTON_BG_EXECUTABLE_FILE;
+ } else if (selected)
+ return BUTTON_BG_NONEXECUTABLE_FILE_SELECTED;
+ else
+ return BUTTON_BG_NONEXECUTABLE_FILE;
+
+ if (selected)
+ return BUTTON_BG_LINK_SELECTED;
+ else
+ return BUTTON_BG_LINK;
+ }
+
+ private JPanel menuPanel;
+
+ public JButton selectedButton;
+
+ public File selectedFile;;
+
+ private final Set menuListeners = new HashSet();
+
+ public Menu(final File directory) {
+ buildContentPanel(directory);
+ }
+
+ public void addMenuListener(final MenuListener menuListener) {
+ menuListeners.add(menuListener);
+ }
+
+ public JButton buildButton(final File file) {
+ JButton button;
+ if (file.isDirectory())
+ button = new JButton("[ " + file.getName() + " ]");
+ else
+ button = new JButton(file.getName());
+
+ button.setBackground(getFileColor(file, false));
+ button.setForeground(new Color(255, 255, 255));
+
+ button.setBorder(new EmptyBorder(5, 10, 5, 10));
+
+ final Menu.ButtonMouseListener mouseListener = new ButtonMouseListener(button, this, file);
+ button.addMouseListener(mouseListener);
+
+ button.setHorizontalTextPosition(SwingConstants.CENTER);
+
+ // set button size
+ Utils.setComponentSize(button, SIZE_BUTTON);
+
+ return button;
+ }
+
+ private void buildContentPanel(final File directory) {
+ menuPanel = new JPanel();
+
+ Utils.setComponentSize(menuPanel, SIZE_MENU_PANEL);
+
+ final BoxLayout layout = new BoxLayout(menuPanel, BoxLayout.Y_AXIS);
+ menuPanel.setLayout(layout);
+ menuPanel.setBackground(Color.BLACK);
+
+ final File[] listFiles = directory.listFiles();
+
+ // Sort files by name
+ Arrays.sort(listFiles, new Comparator() {
+ @Override
+ public int compare(final File f1, final File f2) {
+
+ // directories come before files
+ if (f1.isFile() && f2.isDirectory())
+ return 1;
+ if (f2.isFile() && f1.isDirectory())
+ return -1;
+
+ // order by file name
+ return f1.getName().toUpperCase().compareTo(f2.getName().toUpperCase());
+ }
+ });
+
+ // add files to the panel
+ for (final File file : listFiles)
+ // ignore hidden files
+ if (!file.getName().startsWith(".")) {
+ menuPanel.add(Box.createVerticalStrut(10));
+ menuPanel.add(buildButton(file));
+ }
+ }
+
+ public JPanel getMenuPanel() {
+ return menuPanel;
+ }
+
+ public JButton getSelectedButton() {
+ return selectedButton;
+ }
+
+ public File getSelectedFile() {
+ return selectedFile;
+ }
+
+ public void menuItemHighlighted(final File chosenFile) {
+ for (final MenuListener menuListener : menuListeners)
+ menuListener.menuItemHighlighted(this, chosenFile);
+ }
- }
+ public void menuItemSelected(final File chosenFile) {
+ for (final MenuListener menuListener : menuListeners)
+ menuListener.menuItemSelected(this, chosenFile);
+ }
- public static final Color BUTTON_BG_DIRECTORY = new Color(0, 0, 60);
+ public void menuItemSelectedAlternative(final File chosenFile) {
+ for (final MenuListener menuListener : menuListeners)
+ menuListener.menuItemSelectedAlternative(this, chosenFile);
+ }
- public static final Color BUTTON_BG_DIRECTORY_SELECTED = new Color(0, 0, 100);
- public static final Color BUTTON_BG_LINK = new Color(60, 60, 0);
-
- public static final Color BUTTON_BG_LINK_SELECTED = new Color(100, 100, 0);
- public static final Color BUTTON_BG_EXECUTABLE_FILE = new Color(60, 0, 0);
-
- public static final Color BUTTON_BG_EXECUTABLE_FILE_SELECTED = new Color(100, 0, 0);
- public static final Color BUTTON_BG_NONEXECUTABLE_FILE = new Color(0, 60, 0);
-
- public static final Color BUTTON_BG_NONEXECUTABLE_FILE_SELECTED = new Color(0, 100, 0);
- public static final Dimension SIZE_BUTTON = new Dimension(200, 30);
-
- public static final Dimension SIZE_MENU_PANEL = new Dimension(210, 900);
-
- /**
- *
- * Assign specific colors to:
- * Directory
- * Executable file
- * Non executable file
- *
- */
- public static Color getFileColor(final File file, final boolean selected) {
- if (file.isDirectory())
- if (selected)
- return BUTTON_BG_DIRECTORY_SELECTED;
- else
- return BUTTON_BG_DIRECTORY;
-
- if (file.isFile())
- if (file.canExecute()) {
- if (selected)
- return BUTTON_BG_EXECUTABLE_FILE_SELECTED;
- else
- return BUTTON_BG_EXECUTABLE_FILE;
- } else if (selected)
- return BUTTON_BG_NONEXECUTABLE_FILE_SELECTED;
- else
- return BUTTON_BG_NONEXECUTABLE_FILE;
-
- if (selected)
- return BUTTON_BG_LINK_SELECTED;
- else
- return BUTTON_BG_LINK;
- }
-
- private JPanel menuPanel;
-
- public JButton selectedButton;
-
- public File selectedFile;;
-
- private final Set menuListeners = new HashSet();
-
- public Menu(final File directory) {
- buildContentPanel(directory);
- }
-
- public void addMenuListener(final MenuListener menuListener) {
- menuListeners.add(menuListener);
- }
-
- public JButton buildButton(final File file) {
- JButton button;
- if (file.isDirectory())
- button = new JButton("[ " + file.getName() + " ]");
- else
- button = new JButton(file.getName());
-
- button.setBackground(getFileColor(file, false));
- button.setForeground(new Color(255, 255, 255));
-
- button.setBorder(new EmptyBorder(5, 10, 5, 10));
-
- final Menu.ButtonMouseListener mouseListener = new ButtonMouseListener(button, this, file);
- button.addMouseListener(mouseListener);
-
- button.setHorizontalTextPosition(SwingConstants.CENTER);
-
- // set button size
- Utils.setComponentSize(button, SIZE_BUTTON);
-
- return button;
- }
-
- private void buildContentPanel(final File directory) {
- menuPanel = new JPanel();
-
- Utils.setComponentSize(menuPanel, SIZE_MENU_PANEL);
-
- final BoxLayout layout = new BoxLayout(menuPanel, BoxLayout.Y_AXIS);
- menuPanel.setLayout(layout);
- menuPanel.setBackground(Color.BLACK);
-
- final File[] listFiles = directory.listFiles();
-
- // Sort files by name
- Arrays.sort(listFiles, new Comparator() {
- @Override
- public int compare(final File f1, final File f2) {
-
- // directories come before files
- if (f1.isFile() && f2.isDirectory())
- return 1;
- if (f2.isFile() && f1.isDirectory())
- return -1;
-
- // order by file name
- return f1.getName().toUpperCase().compareTo(f2.getName().toUpperCase());
- }
- });
-
- // add files to the panel
- for (final File file : listFiles)
- // ignore hidden files
- if (!file.getName().startsWith(".")) {
- menuPanel.add(Box.createVerticalStrut(10));
- menuPanel.add(buildButton(file));
- }
- }
-
- public JPanel getMenuPanel() {
- return menuPanel;
- }
-
- public JButton getSelectedButton() {
- return selectedButton;
- }
-
- public File getSelectedFile() {
- return selectedFile;
- }
-
- public void menuItemHighlighted(final File chosenFile) {
- for (final MenuListener menuListener : menuListeners)
- menuListener.menuItemHighlighted(this, chosenFile);
- }
-
- public void menuItemSelected(final File chosenFile) {
- for (final MenuListener menuListener : menuListeners)
- menuListener.menuItemSelected(this, chosenFile);
- }
-
- public void menuItemSelectedAlternative(final File chosenFile) {
- for (final MenuListener menuListener : menuListeners)
- menuListener.menuItemSelectedAlternative(this, chosenFile);
- }
-
- public void setSelected(final JButton selectedButton, final File selectedFile) {
- this.selectedButton = selectedButton;
- this.selectedFile = selectedFile;
- }
+ public void menuItemSelectedAlternative2(final File chosenFile) {
+ for (final MenuListener menuListener : menuListeners)
+ menuListener.menuItemSelectedAlternative2(this, chosenFile);
+ }
+
+ public void setSelected(final JButton selectedButton, final File selectedFile) {
+ this.selectedButton = selectedButton;
+ this.selectedFile = selectedFile;
+ }
}
\ No newline at end of file