public JMenu buildSketchMenu() { JMenuItem runItem = Toolkit.newJMenuItem(AndroidToolbar.getTitle(AndroidToolbar.RUN, false), 'R'); runItem.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent e) { handleRunDevice(); } }); JMenuItem presentItem = Toolkit.newJMenuItemShift(AndroidToolbar.getTitle(AndroidToolbar.RUN, true), 'R'); presentItem.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent e) { handleRunEmulator(); } }); JMenuItem stopItem = new JMenuItem(AndroidToolbar.getTitle(AndroidToolbar.STOP, false)); stopItem.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent e) { handleStop(); } }); return buildSketchMenu(new JMenuItem[] {runItem, presentItem, stopItem}); }
public ContributionManagerDialog() { font = Toolkit.getSansFont(14, Font.PLAIN); numberLabel = new JLabel(Toolkit.getLibIconX("manager/notification"), SwingConstants.CENTER); librariesContributionTab = new ContributionTab(ContributionType.LIBRARY, this); modesContributionTab = new ContributionTab(ContributionType.MODE, this); toolsContributionTab = new ContributionTab(ContributionType.TOOL, this); examplesContributionTab = new ContributionTab(ContributionType.EXAMPLES, this); updatesContributionTab = new UpdateContributionTab(null, this); }
private void registerDisposeListeners() { dialog.addWindowListener( new WindowAdapter() { public void windowClosing(WindowEvent e) { disposeFrame(); } }); // handle window closing commands for ctrl/cmd-W or hitting ESC. Toolkit.registerWindowCloseKeys( dialog.getRootPane(), new ActionListener() { public void actionPerformed(ActionEvent actionEvent) { disposeFrame(); } }); dialog .getContentPane() .addKeyListener( new KeyAdapter() { public void keyPressed(KeyEvent e) { // System.out.println(e); KeyStroke wc = Toolkit.WINDOW_CLOSE_KEYSTROKE; if ((e.getKeyCode() == KeyEvent.VK_ESCAPE) || (KeyStroke.getKeyStrokeForEvent(e).equals(wc))) { disposeFrame(); } } }); }
public JMenu buildFileMenu() { String exportPkgTitle = AndroidToolbar.getTitle(AndroidToolbar.EXPORT, false); JMenuItem exportPackage = Toolkit.newJMenuItem(exportPkgTitle, 'E'); exportPackage.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent e) { handleExportPackage(); } }); String exportProjectTitle = AndroidToolbar.getTitle(AndroidToolbar.EXPORT, true); JMenuItem exportProject = Toolkit.newJMenuItemShift(exportProjectTitle, 'E'); exportProject.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent e) { handleExportProject(); } }); return buildFileMenu(new JMenuItem[] {exportPackage, exportProject}); }
private void createComponents() { categoryLabel = new JLabel(Language.text("contrib.category")); categoryChooser = new JComboBox<String>(); categoryChooser.setMaximumRowCount(20); categoryChooser.setFont(Toolkit.getSansFont(14, Font.PLAIN)); updateCategoryChooser(); categoryChooser.addItemListener( new ItemListener() { public void itemStateChanged(ItemEvent e) { category = (String) categoryChooser.getSelectedItem(); if (ContributionManagerDialog.ANY_CATEGORY.equals(category)) { category = null; } filterLibraries(category, filterField.filters); contributionListPanel.updateColors(); } }); filterField = new FilterField(); }
public FilterField() { super(""); filterLabel = new JLabel("Filter"); filterLabel.setFont(Toolkit.getSansFont(14, Font.PLAIN)); filterLabel.setOpaque(false); setFont(Toolkit.getSansFont(14, Font.PLAIN)); searchIcon = Toolkit.getLibIconX("manager/search"); filterLabel.setIcon(searchIcon); // searchIcon = new // ImageIcon(java.awt.Toolkit.getDefaultToolkit().getImage("NSImage://NSComputerTemplate")); setOpaque(false); // setBorder(BorderFactory.createMatteBorder(0, 33, 0, 0, searchIcon)); GroupLayout fl = new GroupLayout(this); setLayout(fl); fl.setHorizontalGroup(fl.createSequentialGroup().addComponent(filterLabel)); fl.setVerticalGroup( fl.createSequentialGroup() .addPreferredGap( LayoutStyle.ComponentPlacement.RELATED, GroupLayout.PREFERRED_SIZE, Short.MAX_VALUE) .addComponent(filterLabel) .addPreferredGap( LayoutStyle.ComponentPlacement.RELATED, GroupLayout.PREFERRED_SIZE, Short.MAX_VALUE)); filters = new ArrayList<String>(); addFocusListener( new FocusListener() { public void focusLost(FocusEvent focusEvent) { if (getText().isEmpty()) { // setBorder(BorderFactory.createMatteBorder(0, 33, 0, 0, searchIcon)); filterLabel.setVisible(true); } } public void focusGained(FocusEvent focusEvent) { // setBorder(BorderFactory.createEmptyBorder(0, 3, 0, 0)); filterLabel.setVisible(false); } }); getDocument() .addDocumentListener( new DocumentListener() { public void removeUpdate(DocumentEvent e) { applyFilter(); } public void insertUpdate(DocumentEvent e) { applyFilter(); } public void changedUpdate(DocumentEvent e) { applyFilter(); } }); }
protected void buildErrorPanel() { errorPanel = new JPanel(); GroupLayout layout = new GroupLayout(errorPanel); layout.setAutoCreateGaps(true); layout.setAutoCreateContainerGaps(true); errorPanel.setLayout(layout); // errorPanel.setBorder(BorderFactory.createMatteBorder(2, 0, 0, 0, Color.BLACK)); errorMessage = new JTextPane(); errorMessage.setEditable(false); errorMessage.setContentType("text/html"); errorMessage.setText( "<html><body>Could not connect to the Processing server.<br>" + "Contributions cannot be installed or updated without an Internet connection.<br>" + "Please verify your network connection again, then try connecting again.</body></html>"); errorMessage.setFont(Toolkit.getSansFont(14, Font.PLAIN)); errorMessage.setMaximumSize(new Dimension(550, 50)); errorMessage.setOpaque(false); StyledDocument doc = errorMessage.getStyledDocument(); SimpleAttributeSet center = new SimpleAttributeSet(); StyleConstants.setAlignment(center, StyleConstants.ALIGN_CENTER); doc.setParagraphAttributes(0, doc.getLength(), center, false); closeButton = new JButton("X"); closeButton.setContentAreaFilled(false); closeButton.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent e) { contribDialog.makeAndShowTab(false, false); } }); tryAgainButton = new JButton("Try Again"); tryAgainButton.setFont(Toolkit.getSansFont(14, Font.PLAIN)); tryAgainButton.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent e) { contribDialog.makeAndShowTab(false, true); contribDialog.downloadAndUpdateContributionListing(editor.getBase()); } }); layout.setHorizontalGroup( layout .createSequentialGroup() .addPreferredGap( LayoutStyle.ComponentPlacement.RELATED, GroupLayout.PREFERRED_SIZE, Short.MAX_VALUE) .addGroup( layout .createParallelGroup(GroupLayout.Alignment.CENTER) .addComponent(errorMessage) .addComponent( tryAgainButton, StatusPanel.BUTTON_WIDTH, StatusPanel.BUTTON_WIDTH, StatusPanel.BUTTON_WIDTH)) .addPreferredGap( LayoutStyle.ComponentPlacement.RELATED, GroupLayout.PREFERRED_SIZE, Short.MAX_VALUE) .addComponent(closeButton)); layout.setVerticalGroup( layout .createSequentialGroup() .addGroup( layout.createParallelGroup().addComponent(errorMessage).addComponent(closeButton)) .addPreferredGap(LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(tryAgainButton)); errorPanel.setBackground(Color.PINK); errorPanel.validate(); }
protected void setLayout(final Editor editor, boolean activateErrorPanel, boolean isLoading) { if (progressBar == null) { progressBar = new JProgressBar(); progressBar.setVisible(false); createComponents(); buildErrorPanel(); loaderLabel = new JLabel(Toolkit.getLibIcon("manager/loader.gif")); loaderLabel.setOpaque(false); loaderLabel.setBackground(Color.WHITE); } int scrollBarWidth = contributionListPanel.scrollPane.getVerticalScrollBar().getPreferredSize().width; GroupLayout layout = new GroupLayout(this); setLayout(layout); // layout.setAutoCreateContainerGaps(true); // layout.setAutoCreateGaps(true); layout.setHorizontalGroup( layout .createParallelGroup(GroupLayout.Alignment.CENTER) .addGroup( layout .createSequentialGroup() .addGap(ContributionManagerDialog.STATUS_WIDTH) .addComponent( filterField, ContributionManagerDialog.FILTER_WIDTH, ContributionManagerDialog.FILTER_WIDTH, ContributionManagerDialog.FILTER_WIDTH) // .addPreferredGap(LayoutStyle.ComponentPlacement.UNRELATED) .addPreferredGap( LayoutStyle.ComponentPlacement.RELATED, GroupLayout.PREFERRED_SIZE, Short.MAX_VALUE) .addComponent( categoryChooser, ContributionManagerDialog.AUTHOR_WIDTH, ContributionManagerDialog.AUTHOR_WIDTH, ContributionManagerDialog.AUTHOR_WIDTH) .addGap(scrollBarWidth)) .addComponent(loaderLabel) .addComponent(contributionListPanel) .addComponent(errorPanel) .addComponent(statusPanel)); layout.setVerticalGroup( layout .createSequentialGroup() .addContainerGap() .addGroup( layout .createParallelGroup(GroupLayout.Alignment.CENTER) .addComponent(categoryChooser) .addComponent(filterField)) .addPreferredGap(LayoutStyle.ComponentPlacement.UNRELATED) .addGroup( layout .createParallelGroup(GroupLayout.Alignment.CENTER) .addComponent(loaderLabel) .addComponent(contributionListPanel)) .addComponent(errorPanel) .addComponent( statusPanel, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)); layout.linkSize(SwingConstants.VERTICAL, categoryChooser, filterField); // these will occupy space even if not visible layout.setHonorsVisibility(contributionListPanel, false); layout.setHonorsVisibility(categoryChooser, false); setBackground(Color.WHITE); setBorder(null); }
private void makeAndSetTabComponents() { final String[] tabTitles = {"Libraries", "Modes", "Tools", "Examples", "Updates"}; tabLabels = new JLabel[4]; for (int i = 0; i < 4; i++) { final int temp = i; tabLabels[i] = new JLabel(tabTitles[i]) { @Override protected void paintComponent(Graphics g) { g.setClip( Toolkit.createRoundRect( 0, 0, getWidth(), getHeight(), temp == 0 ? 6 : 0, temp == 3 ? 6 : 0, 0, 0)); super.paintComponent(g); } }; tabLabels[i].setForeground(Color.WHITE); tabLabels[i].setBackground(new Color(0x2d4251)); tabLabels[i].setOpaque(true); tabLabels[i].setBorder(BorderFactory.createEmptyBorder(6, 6, 6, 6)); tabLabels[i].setPreferredSize(new Dimension(TAB_WIDTH, TAB_HEIGHT)); tabLabels[i].setHorizontalAlignment(SwingConstants.CENTER); tabLabels[i].setFont(Toolkit.getSansFont(14, Font.BOLD)); tabbedPane.setTabComponentAt(i, tabLabels[i]); } updateTabPanel = new JPanel() { @Override protected void paintComponent(Graphics g) { g.setClip(Toolkit.createRoundRect(0, 0, getWidth(), getHeight(), 6, 6, 0, 0)); super.paintComponent(g); } }; ; updateTabLabel = new JLabel("Updates"); updateTabLabel.setFont(Toolkit.getSansFont(14, Font.BOLD)); numberLabel.setVerticalTextPosition(SwingConstants.CENTER); numberLabel.setHorizontalTextPosition(SwingConstants.CENTER); numberLabel.setFont(Toolkit.getSansFont(14, Font.BOLD)); numberLabel.setForeground(Color.WHITE); updateTabPanel.setOpaque(true); updateTabPanel.setBackground(new Color(0x2d4251)); updateTabLabel.setForeground(Color.WHITE); updateTabPanel.setBorder(BorderFactory.createEmptyBorder(6, 6, 6, 6)); updateTabPanel.setPreferredSize(new Dimension(TAB_WIDTH, TAB_HEIGHT)); tabbedPane.setTabComponentAt(4, updateTabPanel); GroupLayout tabLayout = new GroupLayout(updateTabPanel); tabLayout.setAutoCreateGaps(true); updateTabPanel.setLayout(tabLayout); tabLayout.setHorizontalGroup( tabLayout .createSequentialGroup() .addPreferredGap( LayoutStyle.ComponentPlacement.RELATED, GroupLayout.PREFERRED_SIZE, Short.MAX_VALUE) .addComponent(updateTabLabel) .addComponent(numberLabel) .addPreferredGap( LayoutStyle.ComponentPlacement.RELATED, GroupLayout.PREFERRED_SIZE, Short.MAX_VALUE)); tabLayout.setVerticalGroup( tabLayout .createParallelGroup(GroupLayout.Alignment.CENTER) .addComponent(numberLabel) .addComponent(updateTabLabel)); numberLabel.setVisible(false); }
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); }