private void addControls() { this.setLayout(new BoxLayout(getContentPane(), BoxLayout.PAGE_AXIS)); panelMenu = new PanelMenu(); panelMenu.setBorder(new EmptyBorder(5, 5, 5, 5)); panelMenu.setPreferredSize(new Dimension(410, 50)); add(panelMenu); JTabbedPane tabbedPane = new JTabbedPane(); tabbedPane.setBorder(new EmptyBorder(5, 5, 5, 5)); ImageIcon icon = createImageIcon("exam.jpg"); panelExam = new PanelExam(); tabbedPane.addTab(getText("Exams"), icon, panelExam, getText("Manage.exams")); tabbedPane.setMnemonicAt(0, KeyEvent.VK_1); icon = createImageIcon("question.png"); panelQuestion = new PanelQuestion(); tabbedPane.addTab(getText("Questions"), icon, panelQuestion, getText("Manage.questions")); tabbedPane.setMnemonicAt(1, KeyEvent.VK_2); icon = createImageIcon("exclamation.png"); panelAnswer = new PanelAnswer(); tabbedPane.addTab(getText("Answers"), icon, panelAnswer, getText("Manage.answers")); panelAnswer.setPreferredSize(new Dimension(410, 50)); tabbedPane.setMnemonicAt(2, KeyEvent.VK_3); tabbedPane.addChangeListener( new ChangeListener() { @Override public void stateChanged(ChangeEvent e) { JTabbedPane source = (JTabbedPane) e.getSource(); switch (source.getSelectedIndex()) { case 0: panelExam.refresh(); break; case 1: panelQuestion.refresh(); break; case 2: panelAnswer.refresh(); break; } } }); add(tabbedPane); tabbedPane.setTabLayoutPolicy(JTabbedPane.SCROLL_TAB_LAYOUT); panelQuestion.refresh(); }
public MainTabPane(JFrame parent) { super(new GridLayout(1, 1)); mainTabPane = new JTabbedPane(); mainTabPane.addTab("Officer Records", new OfficerPanel(parent)); mainTabPane.setMnemonicAt(0, KeyEvent.VK_1); mainTabPane.addTab("Vehicle Records", new VehiclePanel(parent)); mainTabPane.setMnemonicAt(1, KeyEvent.VK_2); mainTabPane.addTab("Fleet Records", new FleetStarterPanel(parent)); mainTabPane.setMnemonicAt(2, KeyEvent.VK_3); add(mainTabPane); }
/** * This method populates the ProjectSelector with all the subpanels and buttons * * @param main The object to notify when the ok button is pressed. */ public void populate(Object main) { this.main = main; // gather all projects String[] projects = getAllProjectNames(); if (projects == null) { Main.fatalError( "Cannot find the project folder. Please ensure that the framework is installed properly."); } Arrays.sort(projects); // sort the projects in ascending order this.addComponentListener( new ComponentListener() { int oldX = appConfig.projectSelectorWindowPosX, oldY = appConfig.projectSelectorWindowPosY; public void componentResized(ComponentEvent e) { if (ProjectSelector.this.getExtendedState() == JFrame.MAXIMIZED_BOTH) { appConfig.projectSelectorIsMaximized = true; appConfig.projectSelectorWindowPosX = oldX; appConfig.projectSelectorWindowPosY = oldY; } else { appConfig.projectSelectorIsMaximized = false; appConfig.projectSelectorWindowWidth = ProjectSelector.this.getWidth(); appConfig.projectSelectorWindowHeight = ProjectSelector.this.getHeight(); } customParameters.setSize( 100, customParameters .getHeight()); // needed to ensure that the text field shrinks as well } public void componentMoved(ComponentEvent e) { oldX = appConfig.projectSelectorWindowPosX; oldY = appConfig.projectSelectorWindowPosY; appConfig.projectSelectorWindowPosX = ProjectSelector.this.getX(); appConfig.projectSelectorWindowPosY = ProjectSelector.this.getY(); } public void componentShown(ComponentEvent e) {} public void componentHidden(ComponentEvent e) {} }); // safe the overal config file when the project selector closes this.addWindowListener( new WindowListener() { public void windowOpened(WindowEvent e) {} public void windowClosing(WindowEvent e) { appConfig.projectSelectorSelectedTab = 1 + right.getSelectedIndex(); appConfig.writeConfig(); } public void windowClosed(WindowEvent e) {} public void windowIconified(WindowEvent e) {} public void windowDeiconified(WindowEvent e) {} public void windowActivated(WindowEvent e) {} public void windowDeactivated(WindowEvent e) {} }); this.setLayout(new BorderLayout()); this.setResizable(true); if (appConfig.projectSelectorIsMaximized) { setExtendedState(JFrame.MAXIMIZED_BOTH); } this.setSize( new Dimension(appConfig.projectSelectorWindowWidth, appConfig.projectSelectorWindowHeight)); this.setLocation(appConfig.projectSelectorWindowPosX, appConfig.projectSelectorWindowPosY); JPanel left = new JPanel(); left.setLayout(new BorderLayout()); // List of all projects selection.setListData(projects); selection.setSelectedValue(appConfig.lastChosenProject, true); if (!selection.isSelectionEmpty()) { selectedProjectName = (String) selection.getSelectedValue(); } else { selectedProjectName = ""; } selection.addListSelectionListener(this); selection.setBorder(BorderFactory.createEmptyBorder(3, 3, 3, 0)); selection.setBackground(listPanel.getBackground()); listScroller = new JScrollPane(selection); listPanel.setLayout(new BorderLayout()); listScroller.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0)); listPanel.add(listScroller, BorderLayout.CENTER); listPanel.setBorder(BorderFactory.createTitledBorder("Available Projects")); left.add(listPanel, BorderLayout.CENTER); // OK / Cancel buttons buttonPanel.add(ok); buttonPanel.add(cancel); ok.addActionListener(this); cancel.addActionListener(this); buttonPanel.setPreferredSize(new Dimension(projectListWidth, 40)); left.add(buttonPanel, BorderLayout.SOUTH); this.add(left, BorderLayout.WEST); // right.setBorder(BorderFactory.createTitledBorder("Project Description & Configuration")); // The tab containing the description of the selected project JPanel description = new JPanel(); description.setLayout(new BorderLayout()); scrollableDescriptionPane = new JScrollPane(descriptionText); description.add(scrollableDescriptionPane); descriptionText.setEditable(false); descriptionText.setBorder(BorderFactory.createEmptyBorder(3, 3, 3, 3)); int i = selection.getSelectedIndex(); if (i == -1) { // there was no defaultProject descriptionText.setText("Please select a project."); } else { generateGUIDescription(selectedProjectName); } right.addTab("Description", description); // The tab containing the config-file entries configuration.setLayout(new BoxLayout(configuration, BoxLayout.Y_AXIS)); scrollableConfigurationPane = new JScrollPane(frameworkConfigurationPanel); // increment the scroll speed (for some reason the speed for the scrollableConfigurationPane is // very low) scrollableConfigurationPane.getVerticalScrollBar().setUnitIncrement(15); frameworkConfigurationPanel.setBorder(BorderFactory.createEmptyBorder(3, 3, 3, 3)); configuration.add(scrollableConfigurationPane); JPanel bp = new JPanel(); bp.add(saveConfig); saveConfig.addActionListener(this); saveConfig.setMnemonic(java.awt.event.KeyEvent.VK_S); configuration.add(bp); expand = createFrameworkIconButton("expand", "expand.gif", "Show advanced settings"); collapse = createFrameworkIconButton("collapse", "collapse.gif", "Hide advanced settings"); customConfigurationPanel.setLayout(new BorderLayout()); JPanel mainCustomConfigurationPanel = new JPanel(); mainCustomConfigurationPanel.setLayout( new BoxLayout(mainCustomConfigurationPanel, BoxLayout.Y_AXIS)); mainCustomConfigurationPanel.add(customConfigurationPanel); // and the save button JPanel bp2 = new JPanel(); bp2.add(saveConfig2); saveConfig2.addActionListener(this); saveConfig2.setMnemonic(java.awt.event.KeyEvent.VK_S); mainCustomConfigurationPanel.add(bp2); right.addTab("Framework Config", configuration); right.addTab("Project Config", mainCustomConfigurationPanel); right.setMnemonicAt(0, java.awt.event.KeyEvent.VK_D); right.setMnemonicAt(1, java.awt.event.KeyEvent.VK_F); right.setMnemonicAt(2, java.awt.event.KeyEvent.VK_P); right.setSelectedIndex(appConfig.projectSelectorSelectedTab - 1); if (i == -1) { JTextField msg = new JTextField("Please select a project."); msg.setEditable(false); frameworkConfigurationPanel.add(msg); } else { generateGUIGonfiguration(selectedProjectName); } this.add(right, BorderLayout.CENTER); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.getRootPane().setDefaultButton(ok); this.setVisible(true); // this.setUndecorated(true); // GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice().setFullScreenWindow(this); }
private void makeFrame(final Editor editor) { dialog = new JFrame(title); dialog.setMinimumSize(new Dimension(750, 500)); tabbedPane = new JTabbedPane(); makeAndShowTab(false, true); tabbedPane.addTab("Libraries", null, librariesContributionTab.panel, "Libraries"); tabbedPane.setMnemonicAt(0, KeyEvent.VK_1); tabbedPane.addTab("Modes", null, modesContributionTab.panel, "Modes"); tabbedPane.setMnemonicAt(1, KeyEvent.VK_2); tabbedPane.addTab("Tools", null, toolsContributionTab.panel, "Tools"); tabbedPane.setMnemonicAt(2, KeyEvent.VK_3); tabbedPane.addTab("Examples", null, examplesContributionTab.panel, "Examples"); tabbedPane.setMnemonicAt(3, KeyEvent.VK_4); tabbedPane.addTab("Updates", null, updatesContributionTab.panel, "Updates"); tabbedPane.setMnemonicAt(4, KeyEvent.VK_5); tabbedPane.setUI(new SpacedTabbedPaneUI()); tabbedPane.setBackground(new Color(0x132638)); tabbedPane.setOpaque(true); for (int i = 0; i < 5; i++) { tabbedPane.setToolTipTextAt(i, null); } makeAndSetTabComponents(); tabbedPane.addChangeListener( new ChangeListener() { @Override public void stateChanged(ChangeEvent e) { for (int i = 0; i < 4; i++) { tabLabels[i].setBackground(new Color(0x2d4251)); tabLabels[i].setForeground(Color.WHITE); } updateTabPanel.setBackground(new Color(0x2d4251)); updateTabLabel.setForeground(Color.WHITE); int currentIndex = tabbedPane.getSelectedIndex(); if (currentIndex != 4) { tabbedPane .getTabComponentAt(tabbedPane.getSelectedIndex()) .setBackground(new Color(0xe0fffd)); tabbedPane .getTabComponentAt(tabbedPane.getSelectedIndex()) .setForeground(Color.BLACK); } else { updateTabPanel.setBackground(new Color(0xe0fffd)); updateTabLabel.setForeground(Color.BLACK); } getActiveTab().contributionListPanel.scrollPane.requestFocusInWindow(); // // When the tab is changed update status to the current selected panel // ContributionPanel currentPanel = getActiveTab().contributionListPanel // .getSelectedPanel(); // if (currentPanel != null) { // getActiveTab().contributionListPanel.setSelectedPanel(currentPanel); // } } }); // tabbedPane.setSize(450, 400); setLayout(); restartButton = new JButton(Language.text("contrib.restart")); restartButton.setVisible(false); restartButton.addActionListener( new ActionListener() { @Override public void actionPerformed(ActionEvent arg0) { Iterator<Editor> iter = editor.getBase().getEditors().iterator(); while (iter.hasNext()) { Editor ed = iter.next(); if (ed.getSketch().isModified()) { int option = Messages.showYesNoQuestion( editor, title, Language.text("contrib.unsaved_changes"), Language.text("contrib.unsaved_changes.prompt")); if (option == JOptionPane.NO_OPTION) return; else break; } } // Thanks to http://stackoverflow.com/a/4160543 StringBuilder cmd = new StringBuilder(); cmd.append( System.getProperty("java.home") + File.separator + "bin" + File.separator + "java "); for (String jvmArg : ManagementFactory.getRuntimeMXBean().getInputArguments()) { cmd.append(jvmArg + " "); } cmd.append("-cp ") .append(ManagementFactory.getRuntimeMXBean().getClassPath()) .append(" "); cmd.append(Base.class.getName()); try { Runtime.getRuntime().exec(cmd.toString()); System.exit(0); } catch (IOException e) { e.printStackTrace(); } } }); Toolkit.setIcon(dialog); registerDisposeListeners(); dialog.pack(); dialog.setLocationRelativeTo(null); }
@Override protected void startup() { // set the window icon: { final Image img; if (true) img = getContext().getResourceMap().getImageIcon("Application.icon").getImage(); else { final ResourceMap r = getContext().getResourceMap(); if (true) try { img = ImageIO.read( this.getClass() .getResource( "/" + r.getResourcesDir() + "/" + r.getString("Application.icon"))); } catch (final IOException e) { throw new RuntimeException("Unhandled", e); } else img = Toolkit.getDefaultToolkit() .createImage( this.getClass() .getResource( "/" + r.getResourcesDir() + "/" + r.getString("Application.icon"))); } getMainFrame().setIconImage(img); // SystemTray tray = SystemTray.getSystemTray(); } // File Filter jcxzPat = gui.createFileFilter("fileFilterJcxz", "jcz", "jcx"); pngPat = gui.createFileFilter("fileFilterPng", "png"); svgPat = gui.createFileFilter("fileFilterSvg", "svgz", "svg"); getMainFrame().setJMenuBar(createMenuBar()); final JComponent c = new JPanel(); c.setLayout(new BorderLayout()); tactics.setPreferredSize(new Dimension(400, 600)); c.add(tactics, BorderLayout.CENTER); c.add(url, BorderLayout.NORTH); { final JPanel b = new JPanel(); b.setLayout(new BorderLayout()); final JTabbedPane t = new JTabbedPane(SwingConstants.TOP, JTabbedPane.SCROLL_TAB_LAYOUT); t.add("Rock", broomSwing); t.setMnemonicAt(0, 'R'); t.add("Ice", curlerSwing); t.setMnemonicAt(1, 'I'); t.add("Collission", new JLabel("TODO: Collission settings")); t.setMnemonicAt(2, 'C'); b.add(t, BorderLayout.NORTH); if (false) b.add(new JLabel("TODO: Bird's eye view"), BorderLayout.CENTER); else b.add(birdPiccolo, BorderLayout.CENTER); c.add(b, BorderLayout.EAST); } show(c); view12Foot(); }
public static void createTabItem(ActionContext actionContext) { Thing self = (Thing) actionContext.get("self"); JTabbedPane parent = (JTabbedPane) actionContext.get("parent"); Thing thing = self.getThing("Component@0"); if (thing != null) { try { Bindings bindings = actionContext.push(); bindings.put("parent", null); for (Thing child : thing.getChilds()) { Component c = (Component) child.doAction("create", actionContext); if (c != null) { int index = parent.getTabCount(); parent.setComponentAt(index, c); Color background = AwtCreator.createColor(thing, "background", actionContext); if (background != null) { parent.setBackgroundAt(index, background); } Icon disabledIcon = SwingCreator.createIcon(thing, "disabledIcon", actionContext); if (disabledIcon != null) { parent.setDisabledIconAt(index, disabledIcon); } Integer displayedMnemonicIndex = JavaCreator.createInteger(thing, "displayedMnemonicIndex"); if (displayedMnemonicIndex != null) { parent.setDisplayedMnemonicIndexAt(index, displayedMnemonicIndex); } Boolean enabled = JavaCreator.createBoolean(thing, "enabled"); if (enabled != null) { parent.setEnabledAt(index, enabled); } Color foreground = AwtCreator.createColor(thing, "foreground", actionContext); if (foreground != null) { parent.setForeground(foreground); } Icon icon = SwingCreator.createIcon(thing, "icon", actionContext); if (icon != null) { parent.setIconAt(index, icon); } Integer mnemonic = AwtCreator.createMnemonic(thing, "mnemonic"); if (mnemonic != null) { parent.setMnemonicAt(index, mnemonic); } Boolean selected = JavaCreator.createBoolean(thing, "selected"); if (selected != null && selected) { parent.setSelectedIndex(index); } String title = JavaCreator.createText(thing, "title", actionContext); if (title != null) { parent.setTitleAt(index, title); } String toolTipText = JavaCreator.createText(thing, "toolTipText", actionContext); if (toolTipText != null) { parent.setToolTipTextAt(index, toolTipText); } break; } } } finally { actionContext.pop(); } } }
/** * Constructor to initialize the GUI. This should only be invoked from the Swing event thread. * Properties must be initialized first. In particular, {@link Survivor#currentColourScheme} must * be set. * * @param survivor The Survivor object associated with this object */ public RootPanel(final Survivor survivor) { this.backgroundColourableComponents = new HashSet<Component>(); this.complementaryAmenableForegroundColourableComponents = new HashSet<Component>(); this.colourSchemeButtons = new HashSet<AbstractButton>(); this.survivor = survivor; // Do nothing on close to allow close to be handles identically to File>Quit. this.setDefaultCloseOperation(DO_NOTHING_ON_CLOSE); /* * This is added as an anonymous inner class to * prevent having to extend WindowAdapter or implement WindowListener. */ this.addWindowListener( new WindowAdapter() { /* (non-Javadoc) * @see java.awt.event.WindowAdapter#windowClosing(java.awt.event.WindowEvent) */ @Override public void windowClosing(WindowEvent e) { exit(); } }); this.setTitle(application.ProjectInfo.TITLE); this.setSize(size); this.setMinimumSize(size); this.setLayout(new BorderLayout()); /* * Attempts to set the Look and Feel to Nimbus. * Note that a modicum of backwards compatibility is present if Nimbus cannot be found. * It is ideal that it is available, since it severely reduces colour schemes. */ try { for (LookAndFeelInfo info : UIManager.getInstalledLookAndFeels()) { if ("Nimbus".equals(info.getName())) { this.nimbus = info.getClassName(); UIManager.setLookAndFeel(this.nimbus); break; } } } catch (Exception e) { } tabbedPane = new JTabbedPane(); ContestantManagementTab contestantManagementTab = new ContestantManagementTab(survivor); tabbedPane.addTab( ContestantManagementTab.TITLE, ContestantManagementTab.ICON, contestantManagementTab, ContestantManagementTab.TOOLTIP); tabbedPane.setMnemonicAt(tabbedPane.getTabCount() - 1, KeyEvent.VK_C); PlayerManagementTab playerManagementTab = new PlayerManagementTab(survivor); tabbedPane.addTab( PlayerManagementTab.TITLE, PlayerManagementTab.ICON, playerManagementTab, PlayerManagementTab.TOOLTIP); tabbedPane.setMnemonicAt(tabbedPane.getTabCount() - 1, KeyEvent.VK_P); tabbedPane.addTab( BonusQuestionTab.TITLE, BonusQuestionTab.ICON, new BonusQuestionTab(survivor), BonusQuestionTab.TOOLTIP); tabbedPane.setMnemonicAt(tabbedPane.getTabCount() - 1, KeyEvent.VK_B); tabbedPane.addTab( StandingsTab.TITLE, StandingsTab.ICON, new StandingsTab(), StandingsTab.TOOLTIP); tabbedPane.setMnemonicAt(tabbedPane.getTabCount() - 1, KeyEvent.VK_S); JButton startGame = new JButton(START_GAME); startGame.addActionListener(this); startGame.addActionListener(contestantManagementTab); startGame.addActionListener(playerManagementTab); startGame.setFont(Constants.BOLD_FONT); startGame.setMnemonic(KeyEvent.VK_G); colourSchemeButtons.add(startGame); tabbedPane.add(new JPanel(new GridLayout(1, 1))); this.startGameTabIndex = tabbedPane.getComponentCount() - 1; tabbedPane.setTabComponentAt(this.startGameTabIndex, startGame); tabbedPane.setEnabledAt(this.startGameTabIndex, false); backgroundColourableComponents.add(tabbedPane); for (Component c : tabbedPane.getComponents()) { backgroundColourableComponents.add(c); } this.add(tabbedPane); io.io.readProperties(); JMenuBar menuBar = new JMenuBar(); backgroundColourableComponents.add(menuBar); JMenu file = new JMenu("File"); file.setMnemonic(KeyEvent.VK_F); this.backgroundColourableComponents.add(file); this.complementaryAmenableForegroundColourableComponents.add(file); menuBar.add(file); JMenuItem menuItem = new JMenuItem(CLEAR_DATA, RESET_ICON); menuItem.setMnemonic(KeyEvent.VK_C); menuItem.addActionListener(this); this.backgroundColourableComponents.add(menuItem); file.add(menuItem); file.addSeparator(); JLabel label = new JLabel("Colour Scheme"); file.add(label); ButtonGroup group = new ButtonGroup(); JRadioButtonMenuItem rbMenuItemDefault = new JRadioButtonMenuItem(DEFAULT); rbMenuItemDefault.addActionListener(this); this.colourSchemeButtons.add(rbMenuItemDefault); this.backgroundColourableComponents.add(rbMenuItemDefault); group.add(rbMenuItemDefault); file.add(rbMenuItemDefault); JRadioButtonMenuItem rbMenuItemSunset = new JRadioButtonMenuItem(SUNSET); rbMenuItemSunset.addActionListener(this); this.colourSchemeButtons.add(rbMenuItemSunset); this.backgroundColourableComponents.add(rbMenuItemSunset); group.add(rbMenuItemSunset); file.add(rbMenuItemSunset); JRadioButtonMenuItem rbMenuItemDawn = new JRadioButtonMenuItem(DAWN); rbMenuItemDawn.addActionListener(this); this.colourSchemeButtons.add(rbMenuItemDawn); this.backgroundColourableComponents.add(rbMenuItemDawn); group.add(rbMenuItemDawn); file.add(rbMenuItemDawn); /* * Set both the colour scheme and the corresponding selection * of the radio button in the file menu. * This data is read from the configuration file, if available. */ setCurrentColourSchemeSelected(); setColourScheme(survivor.getCurrentColourScheme()); menuItem = new JMenuItem(QUIT, QUIT_ICON); menuItem.setMnemonic(KeyEvent.VK_Q); menuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F4, ActionEvent.ALT_MASK)); menuItem.addActionListener(this); this.backgroundColourableComponents.add(menuItem); file.add(menuItem); file.addSeparator(); JMenu help = new JMenu("Help"); help.setMnemonic(KeyEvent.VK_H); this.backgroundColourableComponents.add(help); this.complementaryAmenableForegroundColourableComponents.add(help); menuBar.add(help); menuItem = new JMenuItem(ABOUT, ABOUT_ICON); menuItem.setMnemonic(KeyEvent.VK_A); menuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F1, 0)); menuItem.addActionListener(this); this.backgroundColourableComponents.add(menuItem); help.add(menuItem); help.addSeparator(); this.add(menuBar, BorderLayout.PAGE_START); this.setVisible(true); }
private JFrame createFrame() { init(); JScrollPane primary = Preview.innerTitled( new JScrollPane( primaryTable, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_NEVER), "P\u0332rimary"); JScrollPane secondary = Preview.innerTitled( new JScrollPane( secondaryTable, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_NEVER), "S\u0332econdary"); Actions mnemonicAction = new Actions(Actions.MNEMONIC); mnemonicAction.registerMnemonic(primaryTable, KeyEvent.VK_P, false); mnemonicAction.registerMnemonic(secondaryTable, KeyEvent.VK_S, false); mnemonicAction.registerMnemonic(otherTable, KeyEvent.VK_A, false); mnemonicAction.registerMnemonic(keyFilter, KeyEvent.VK_K, true); mnemonicAction.registerMnemonic(typeFilter, KeyEvent.VK_T, true); registerSortMnemonics(primaryTable); registerSortMnemonics(secondaryTable); registerSortMnemonics(otherTable); JPanel colors = new JPanel(new StackedTableLayout(3, 10, true)); colors.add(primary); colors.add(secondary); Dimension size = new Dimension(Creator.TABLE_WIDTH, primaryTable.getRowHeight() * 20); otherTable.setPreferredScrollableViewportSize(size); JScrollPane other = new JScrollPane(otherTable); other.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS); JPanel otherPanel = new JPanel(null); JPanel filters = new JPanel(new FiltersLayout()); filters.add(keyFilter); filters.add(keyFilterMethod); filters.add(typeFilter); TableColumnModel model = otherTable.getColumnModel(); model.getColumn(UITableModel.KEY_COLUMN_INDEX).addPropertyChangeListener(this); model.addColumnModelListener(this); filtersViewport = new JViewport(); filtersViewport.setView(filters); other.getViewport().addChangeListener(this); GroupLayout layout = new GroupLayout(otherPanel); otherPanel.setLayout(layout); layout.setHorizontalGroup( layout .createSequentialGroup() .addGap(2) .addGroup( layout.createParallelGroup().addComponent(filtersViewport).addComponent(other))); final int prf = GroupLayout.PREFERRED_SIZE; layout.setVerticalGroup( layout .createSequentialGroup() .addGap(2) .addComponent(other) .addComponent(filtersViewport, prf, prf, prf)); JTabbedPane tabs = new JTabbedPane(); tabs.addTab("UI Base", colors); tabs.setMnemonicAt(0, KeyEvent.VK_B); tabs.addTab("UI Controls", otherPanel); tabs.setMnemonicAt(1, KeyEvent.VK_C); tabs.addChangeListener(this); JButton imp = new JButton("Import"); imp.setMnemonic(KeyEvent.VK_M); imp.addActionListener(this); JButton exp = new JButton("Export"); exp.setMnemonic(KeyEvent.VK_X); exp.addActionListener(this); Box south = Box.createHorizontalBox(); south.setBorder(BorderFactory.createEmptyBorder(0, 3, 3, 3)); south.add(imp); south.add(exp); south.add(Box.createHorizontalGlue()); south.add(preview); south.add(Box.createHorizontalStrut(3)); south.add(update); frame = new JFrame(getClass().getSimpleName()); frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); frame.addWindowListener(this); frame.add(tabs, BorderLayout.CENTER); frame.add(south, BorderLayout.SOUTH); return frame; }
/** The globalvend screen which shows statistics of the overall system. */ private void globalVendScreen() { // TODO Auto-generated method stub mainLayout.removeAll(); mainLayout.setLayout(new BorderLayout(0, 20)); JPanel mainLeftSide = new JPanel(new BorderLayout(0, 20)); JLabel heading = new JLabel("<html><center>List of Vending <br>Machines</center></html>"); heading.setFont(new Font("Verdana", Font.BOLD, 20)); String data[] = new String[numberOfMachines]; for (int i = 0; i < numberOfMachines; ++i) { data[i] = "Vending Machine " + (i + 1); } final JList<String> listVendingMachine = new JList<String>(data); listVendingMachine.setFont(new Font("Arial", Font.PLAIN, 20)); listVendingMachine.setFixedCellHeight(50); listVendingMachine.setSelectedIndex(0); numOfSelected = listVendingMachine.getSelectedIndices(); JScrollPane listOfMachineScroll = new JScrollPane(listVendingMachine); JPanel southPanel = new JPanel(new GridLayout(3, 1)); JPanel southButtonPanel = new JPanel(new GridLayout(1, 2)); JPanel southTextPanel = new JPanel(new FlowLayout()); JLabel textLabel = new JLabel("ID's: "); final JTextField idNumbers = new JTextField(); idNumbers.setPreferredSize(new Dimension(200, 50)); southTextPanel.add(textLabel); southTextPanel.add(idNumbers); final JButton updateButton = new JButton("Update"); JButton selectButton = new JButton("Select All"); JButton deselectButton = new JButton("Deselect All"); southButtonPanel.add(deselectButton); southButtonPanel.add(selectButton); southPanel.add(southTextPanel); southPanel.add(southButtonPanel); southPanel.add(updateButton); mainLeftSide.add(heading, BorderLayout.NORTH); mainLeftSide.add(listOfMachineScroll, BorderLayout.CENTER); mainLeftSide.add(southPanel, BorderLayout.SOUTH); JTabbedPane tabbedPane = new JTabbedPane(); final JComponent panel1 = localVendListStockPanel(); JScrollPane scrollPanel1 = new JScrollPane(panel1); tabbedPane.addTab("List Stock", scrollPanel1); tabbedPane.setMnemonicAt(0, KeyEvent.VK_5); // final JComponent panel4 = machineChart(curID+1); // tabbedPane.addTab("", panel4); final JComponent panel2 = localVendRestockerPanel(); JScrollPane scrollPanel2 = new JScrollPane(panel2); tabbedPane.addTab("Restocker", scrollPanel2); tabbedPane.setMnemonicAt(1, KeyEvent.VK_2); final JComponent panel3 = new JPanel(); localVendMarketingPanel((JPanel) panel3); JScrollPane scrollPanel3 = new JScrollPane(panel3); tabbedPane.addTab("Marketing", panel3); tabbedPane.setMnemonicAt(2, KeyEvent.VK_3); final JComponent panel4 = machineChart(numOfSelected); JScrollPane scrollPanel4 = new JScrollPane(panel4); tabbedPane.addTab("Item %", scrollPanel4); tabbedPane.setMnemonicAt(3, KeyEvent.VK_4); final JComponent panelGross = machineGrossChart(numOfSelected); JScrollPane scrollpanelGross = new JScrollPane(panelGross); tabbedPane.addTab("Item Gross", scrollpanelGross); tabbedPane.setMnemonicAt(4, KeyEvent.VK_5); final JComponent panel5 = machineItemChart(numOfSelected); JScrollPane scrollPanel5 = new JScrollPane(panel5); tabbedPane.addTab("% Reasons Item Sold", scrollPanel5); tabbedPane.setMnemonicAt(5, KeyEvent.VK_6); final JComponent panelIncome = makeIncomeGraph(numOfSelected); panelIncome.setRequestFocusEnabled(true); JScrollPane scrollpanelIncome = new JScrollPane(panelIncome); tabbedPane.addTab("Income Graph", scrollpanelIncome); tabbedPane.setMnemonicAt(6, KeyEvent.VK_7); mainLayout.add(mainLeftSide, BorderLayout.WEST); mainLayout.add(tabbedPane, BorderLayout.CENTER); SwingUtilities.updateComponentTreeUI(this); listVendingMachine.setSelectionModel( new DefaultListSelectionModel() { private static final long serialVersionUID = 1L; boolean gestureStarted = false; @Override public void setSelectionInterval(int index0, int index1) { if (!gestureStarted) { if (isSelectedIndex(index0)) { super.removeSelectionInterval(index0, index1); } else { super.addSelectionInterval(index0, index1); } } gestureStarted = true; } @Override public void setValueIsAdjusting(boolean isAdjusting) { if (isAdjusting == false) { gestureStarted = false; } } }); listVendingMachine.addListSelectionListener( new ListSelectionListener() { @Override public void valueChanged(ListSelectionEvent e) { // TODO Auto-generated method stub numOfSelected = listVendingMachine.getSelectedIndices(); ArrayList<Integer> addOns = new ArrayList<Integer>(); if (numOfSelected.length != 0) { String temp = ""; for (int i = 0; i < numOfSelected.length; ++i) { if (i != (numOfSelected.length - 1)) { if (numOfSelected[i] + 1 == numOfSelected[i + 1]) { addOns.add(numOfSelected[i]); } else { if (addOns.size() == 0) { temp += (numOfSelected[i] + 1) + ","; } else { temp += (addOns.get(0) + 1) + "-" + (numOfSelected[i] + 1) + ","; addOns = new ArrayList<Integer>(); } } } else { if (addOns.size() == 0) { temp += (numOfSelected[i] + 1) + ","; } else { temp += (addOns.get(0) + 1) + "-" + (numOfSelected[i] + 1) + ","; addOns = new ArrayList<Integer>(); } } // temp += (numOfSelected[i] + 1) + ","; } temp = temp.substring(0, temp.length() - 1); idNumbers.setText(temp); } } }); idNumbers.addKeyListener( new KeyAdapter() { public void keyTyped(KeyEvent e) { char c = e.getKeyChar(); char last = ' '; if (idNumbers.getText().length() >= 1) last = idNumbers.getText().charAt(idNumbers.getText().length() - 1); int lastDash = idNumbers.getText().lastIndexOf('-'); int lastComma = idNumbers.getText().lastIndexOf(','); if ((last == ' ' && (c == '-' || c == ',')) || (c == '-' && (lastComma - lastDash) < 0) || (last == '-' && (c == '-' || c == ',')) || (last == ',' && (c == ',' || c == '-')) || (!Character.isDigit(c) && c != '-' && c != ',') && (c != KeyEvent.VK_BACK_SPACE)) { e.consume(); // ignore event } } }); selectButton.addActionListener( new ActionListener() { @Override public void actionPerformed(ActionEvent e) { listVendingMachine.addSelectionInterval(0, numberOfMachines - 1); // TODO Auto-generated method stub } }); deselectButton.addActionListener( new ActionListener() { @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub idNumbers.setText(""); listVendingMachine.removeSelectionInterval(0, numberOfMachines - 1); } }); updateButton.addActionListener( new ActionListener() { @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub listVendingMachine.removeSelectionInterval(0, numberOfMachines - 1); String numbers = idNumbers.getText(); String[] splitNumbers = numbers.split(","); for (int i = 0; i < splitNumbers.length; ++i) { if (!splitNumbers[i].equals("")) { if (!splitNumbers[i].contains("-")) { int num = Integer.valueOf(splitNumbers[i]) - 1; if (num < 0) { num = 0; } if (num > numberOfMachines - 1) { num = numberOfMachines - 1; } listVendingMachine.addSelectionInterval(num, num); } else { String[] temp = splitNumbers[i].split("-"); if (!temp[0].equals("") && !temp[1].equals("")) { int num1 = Integer.valueOf(temp[0]) - 1; int num2 = Integer.valueOf(temp[1]) - 1; if (num1 < 0) { num1 = 0; } if (num2 > numberOfMachines - 1) { num2 = numberOfMachines - 1; } listVendingMachine.addSelectionInterval(num1, num2); } } } } numOfSelected = listVendingMachine.getSelectedIndices(); if (numOfSelected.length != 0) { panel1.removeAll(); panel2.removeAll(); panel3.removeAll(); panel4.removeAll(); panel5.removeAll(); panelGross.removeAll(); panelIncome.removeAll(); panel1.add(localVendListStockPanel()); panel2.add(localVendRestockerPanel()); localVendMarketingPanel((JPanel) panel3); panel4.add(machineChart(numOfSelected)); panel5.add(machineItemChart(numOfSelected)); panelGross.add(machineGrossChart(numOfSelected)); panelIncome.add(makeIncomeGraph(numOfSelected)); panel1.revalidate(); panel1.repaint(); panel2.revalidate(); panel2.repaint(); panel3.revalidate(); panel3.repaint(); panel4.revalidate(); panel4.repaint(); panel5.revalidate(); panel5.repaint(); panelGross.revalidate(); panelGross.repaint(); panelIncome.revalidate(); panelIncome.repaint(); } else { panel1.removeAll(); panel2.removeAll(); panel3.removeAll(); panel4.removeAll(); panel5.removeAll(); panelGross.removeAll(); panelIncome.removeAll(); panel1.setLayout(new FlowLayout()); panel2.setLayout(new FlowLayout()); panel3.setLayout(new FlowLayout()); panel4.setLayout(new FlowLayout()); panel5.setLayout(new FlowLayout()); panelGross.setLayout(new FlowLayout()); panelIncome.setLayout(new FlowLayout()); panel1.add(returnEmptyPanelInfo()); panel2.add(returnEmptyPanelInfo()); panel3.add(returnEmptyPanelInfo()); panel4.add(returnEmptyPanelInfo()); panel5.add(returnEmptyPanelInfo()); panelGross.add(returnEmptyPanelInfo()); panelIncome.add(returnEmptyPanelInfo()); panel1.revalidate(); panel1.repaint(); panel2.revalidate(); panel2.repaint(); panel3.revalidate(); panel3.repaint(); panel4.revalidate(); panel4.repaint(); panel5.revalidate(); panel5.repaint(); panelGross.revalidate(); panelGross.repaint(); panelIncome.revalidate(); panelIncome.repaint(); } } }); }