/** * Makes the options window either visible or not visible depending on the boolean argument. * * @param visible <tt>boolean</tt> value specifying whether the options window should be made * visible or not visible * @param key the unique identifying key of the panel to show */ final void setOptionsVisible(boolean visible, final String key) { if (!visible) { DIALOG.dispose(); OptionsMediator.instance().disposeOptions(); } else { GUIUtils.centerOnScreen(DIALOG); // initial tree selection if (key == null) TREE_MANAGER.setDefaultSelection(); else TREE_MANAGER.setSelection(key); // make tree component the default component instead of the search field TREE_MANAGER.getComponent().requestFocusInWindow(); DIALOG.setVisible(true); } }
/** * Adds the specified key and <tt>OptionsPane</tt> to current set of options. This adds this * <tt>OptionsPane</tt> to the set of <tt>OptionsPane</tt>s the user can select. * * @param parentKey the key of the parent node to add the new node to */ private final OptionsTreeNode addOption( final String parentKey, final String childKey, final String label, @SuppressWarnings("unchecked") Class<? extends AbstractPaneItem>... clazzes) { StringBuilder sb = new StringBuilder(); sb.append(label); sb.append(" "); sb.append(extractLabels(clazzes)); OptionsTreeNode node = TREE_MANAGER.addNode(parentKey, childKey, label, sb.toString()); node.setClasses(clazzes); return node; }
private void filter() { TREE_MANAGER.setFilterText(filterTextField.getText()); }
/** * Adds a parent node to the tree. This node serves navigational purposes only, and so has no * corresponding <tt>OptionsPane</tt>. This method allows for multiple tiers of parent nodes, not * only top-level parents. * * @param parentKey the key of the parent node to add this parent node to * @param childKey the key of the new parent node that is a child of the <tt>parentKey</tt> * argument */ private final void addGroupTreeNode(final String parentKey, final String childKey, String label) { TREE_MANAGER.addNode(parentKey, childKey, label, label); }
/** * The constructor create all of the options windows and their components. * * @param treeManager the <tt>OptionsTreeManager</tt> instance to use for constructing the main * panels and adding elements * @param paneManager the <tt>OptionsPaneManager</tt> instance to use for constructing the main * panels and adding elements */ public OptionsConstructor( final OptionsTreeManager treeManager, final OptionsPaneManager paneManager) { TREE_MANAGER = treeManager; PANE_MANAGER = paneManager; final String title = I18n.tr("Options"); final boolean shouldBeModal = !OSUtils.isMacOSX(); DIALOG = new JDialog(GUIMediator.getAppFrame(), title, shouldBeModal); DIALOG.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE); GUIUtils.addHideAction((JComponent) DIALOG.getContentPane()); if (UISettings.UI_OPTIONS_DIALOG_HEIGHT.getValue() < UISettings.UI_OPTIONS_DIALOG_HEIGHT.getDefaultValue()) { UISettings.UI_OPTIONS_DIALOG_HEIGHT.revertToDefault(); } if (UISettings.UI_OPTIONS_DIALOG_WIDTH.getValue() < UISettings.UI_OPTIONS_DIALOG_WIDTH.getDefaultValue()) { UISettings.UI_OPTIONS_DIALOG_WIDTH.revertToDefault(); } DialogSizeSettingUpdater.install( DIALOG, UISettings.UI_OPTIONS_DIALOG_WIDTH, UISettings.UI_OPTIONS_DIALOG_HEIGHT); // most Mac users expect changes to be saved when the window // is closed, so save them DIALOG.addWindowListener( new WindowAdapter() { public void windowClosing(WindowEvent e) { try { DialogOption answer = null; if (OptionsMediator.instance().isDirty()) { answer = GUIMediator.showYesNoCancelMessage( I18n.tr( "You have made changes to some of FrostWire's settings. Would you like to save these changes?")); if (answer == DialogOption.YES) { OptionsMediator.instance().applyOptions(); SettingsGroupManager.instance().save(); } } if (answer != DialogOption.CANCEL) { DIALOG.dispose(); OptionsMediator.instance().disposeOptions(); } } catch (IOException ioe) { // nothing we should do here. a message should // have been displayed to the user with more // information } } }); PaddedPanel mainPanel = new PaddedPanel(); Box splitBox = new Box(BoxLayout.X_AXIS); BoxPanel treePanel = new BoxPanel(BoxLayout.Y_AXIS); BoxPanel filterPanel = new BoxPanel(BoxLayout.X_AXIS); treePanel.add(filterPanel); filterTextField = new SearchField(); filterTextField.setPrompt(I18n.tr("Search here")); filterTextField.setMinimumSize(new Dimension(100, 27)); filterTextField.addActionListener( new ActionListener() { @Override public void actionPerformed(ActionEvent e) { filter(); } }); filterPanel.add(filterTextField); filterPanel.add(Box.createHorizontalStrut(2)); treePanel.add(Box.createVerticalStrut(3)); Component treeComponent = TREE_MANAGER.getComponent(); treePanel.add(treeComponent); Component paneComponent = PANE_MANAGER.getComponent(); splitBox.add(treePanel); splitBox.add(paneComponent); mainPanel.add(splitBox); mainPanel.add(Box.createVerticalStrut(17)); mainPanel.add(new OptionsButtonPanel().getComponent()); DIALOG.getContentPane().add(mainPanel); OptionsTreeNode node = initializePanels(); PANE_MANAGER.show(node); }