private AbstractButton createButton(AppAction action) { if (action instanceof CustomizableAppAction) { ((CustomizableAppAction) action).requestUpdate(this); } if (action.isToggle()) { JToggleButton bt = new JToggleButton(action); bt.setOpaque(false); bt.setContentAreaFilled(false); bt.setBorderPainted(false); bt.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent e) { hideThreadrunning = false; TrayIconPopup.this.dispose(); } }); Icon icon; bt.setIcon(icon = NewTheme.I().getCheckBoxImage(action.getIconKey(), false, ICON_SIZE)); bt.setRolloverIcon(icon); bt.setSelectedIcon( icon = NewTheme.I().getCheckBoxImage(action.getIconKey(), true, ICON_SIZE)); bt.setRolloverSelectedIcon(icon); bt.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR)); bt.setFocusPainted(false); bt.setHorizontalAlignment(JButton.LEFT); bt.setIconTextGap(5); bt.addMouseListener(new HoverEffect(bt)); return bt; } else { // we use a JToggleButton here, because JToggle buttons seem to have a different left icon gap // the jbuttons JToggleButton bt = new JToggleButton(action); bt.setOpaque(false); bt.setContentAreaFilled(false); bt.setBorderPainted(false); bt.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent e) { hideThreadrunning = false; TrayIconPopup.this.dispose(); } }); bt.setIcon(NewTheme.I().getIcon(action.getIconKey(), ICON_SIZE)); bt.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR)); bt.setFocusPainted(false); bt.setHorizontalAlignment(JButton.LEFT); bt.setIconTextGap(5); bt.addMouseListener(new HoverEffect(bt)); return bt; } }
public JToggleButton createButton(String name, ImageIcon icon) { JToggleButton button = new JToggleButton() { @Override public void paintComponent(Graphics g) { if (!isSelected()) { super.paintComponent(g); setForeground(Theme.TEXT_COLOR.darker()); return; } g.setColor(new Color(0x666666)); setForeground(Theme.TEXT_COLOR); g.fillRect(0, 0, getWidth(), getHeight()); super.paintComponent(g); } }; button.setIconTextGap(8); button.setContentAreaFilled(false); button.setFocusPainted(false); button.setBorder( BorderFactory.createCompoundBorder( BorderFactory.createMatteBorder(0, 0, 1, 0, new Color(0x454545)), BorderFactory.createMatteBorder(0, 0, 1, 0, new Color(0x333333)))); button.setHorizontalAlignment(SwingConstants.CENTER); button.setVerticalAlignment(SwingConstants.CENTER); button.setHorizontalTextPosition(SwingConstants.CENTER); button.setVerticalTextPosition(SwingConstants.BOTTOM); button.setForeground(Theme.TEXT_COLOR.darker()); button.setMinimumSize(new Dimension(BUTTON_WIDTH, BUTTON_HEIGHT)); button.setMaximumSize(new Dimension(BUTTON_WIDTH, BUTTON_HEIGHT)); button.setPreferredSize(new Dimension(BUTTON_WIDTH, BUTTON_HEIGHT)); button.setAction( new AbstractAction(name, icon) { @Override public void actionPerformed(ActionEvent e) { switchToPage(e.getActionCommand()); } }); buttonGroup.add(button); return button; }
private JToggleButton createDevCardButton(String text, String imageFile) { final int BUTTON_TEXT_SIZE = 24; BufferedImage image = loadDevCardImage(imageFile); JToggleButton button = new JToggleButton(text, new ImageIcon(image)) { @Override public void paintComponent(Graphics g) { g.setColor(Color.white); g.fillRect(0, 0, this.getWidth(), this.getHeight()); super.paintComponent(g); } }; FontUtils.setFont(button, BUTTON_TEXT_SIZE); button.setBorder(BorderFactory.createEmptyBorder(3, 3, 3, 3)); button.setBackground(Color.white); button.setContentAreaFilled(false); button.setVerticalTextPosition(AbstractButton.BOTTOM); button.setHorizontalTextPosition(AbstractButton.CENTER); button.addChangeListener( new ChangeListener() { @Override public void stateChanged(ChangeEvent arg) { JToggleButton source = (JToggleButton) arg.getSource(); if (source.isSelected()) { source.setBorder(BorderFactory.createLineBorder(Color.black, 3)); } else { source.setBorder(BorderFactory.createEmptyBorder(3, 3, 3, 3)); } } }); return button; }
/** * Adds a panel to this configuration panel. * * @param text the text to use on the toolbar button * @param icon the icon to use on the toolbar button * @param icon2 the icon to use on the toolbar button when the mouse button is held down * @param p the configuration panel page */ public void addPanel(String text, Icon icon, Icon icon2, JPanel p) { JToggleButton button = new JToggleButton(text, icon); button.setVerticalTextPosition(AbstractButton.BOTTOM); button.setHorizontalTextPosition(AbstractButton.CENTER); button.setContentAreaFilled(false); try { // JDK 1.4+ // button.setIconTextGap(0); AbstractButton.class .getMethod("setIconTextGap", new Class[] {Integer.TYPE}) .invoke(button, new Object[] {new Integer(0)}); } catch (Exception ex) { } button.setPressedIcon(icon2); group.add(button); toolbar.add(button); toolbar.setBorder(BorderFactory.createMatteBorder(0, 0, 1, 0, Color.gray)); button.addItemListener( new ItemListener() { public void itemStateChanged(ItemEvent e) { JToggleButton b = (JToggleButton) e.getSource(); switch (e.getStateChange()) { case ItemEvent.SELECTED: select(b); break; case ItemEvent.DESELECTED: unselect(b); break; } } }); if (panel.getComponentCount() == 0) { button.setSelected(true); page = 0; } else { unselect(button); } panel.add(p, text.intern()); }
/** Set up the button bar */ private void setupButtonBar() { bottombar = new JPanel(); bottombar.setLayout(new BoxLayout(bottombar, BoxLayout.X_AXIS)); editEntity = new JToggleButton(); editEntity.setIcon(Builder.getIcon("lock.png", Builder.ICONS, 22)); editEntity.setSelectedIcon(Builder.getIcon("unlock.png", Builder.ICONS, 22)); editEntity.setBorderPainted(false); editEntity.setContentAreaFilled(false); editEntity.setFocusable(false); editEntity.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent e) { if (!editEntity.isSelected() && hasChanged) { /*if(!warnLosingChanges()) { editEntity.setSelected(true); return; } else { editEntity.setSelected(false); hasChanged = false; }*/ doSave(); } enableEditing(editEntity.isSelected()); } }); bottombar.add(editEntity); editEntityText = new JLabel(I18n.getText("general.initializing").toLowerCase()); editEntityText.setLabelFor(editEntity); bottombar.add(editEntityText); editEntitySave = new JButton(I18n.getText("general.saveChanges")); editEntityCancel = new JButton(I18n.getText("general.cancel")); // don't let an errant enter key fire these buttons! editEntitySave.setDefaultCapable(false); editEntityCancel.setDefaultCapable(false); editEntitySave.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent e) { doSave(); } }); editEntityCancel.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent e) { hasChanged = false; editEntity.setSelected(false); enableEditing(false); } }); bottombar.add(Box.createHorizontalGlue()); bottombar.add(editEntitySave); bottombar.add(Box.createHorizontalStrut(6)); bottombar.add(editEntityCancel); bottombar.add(Box.createHorizontalStrut(6)); }
/** * Creates a new instance of <code>Channel</code> using the specified non-<code>null</code> * channel model. * * @param model The model to be used by this channel. * @throws IllegalArgumentException If the model is <code>null</code>. */ public Channel(SamplerChannelModel model) { super(model); setBorder(BorderFactory.createEmptyBorder(1, 1, 1, 1)); mainPane.setLayout(new BoxLayout(mainPane, BoxLayout.Y_AXIS)); JPanel p = new JPanel(); p.setLayout(new BoxLayout(p, BoxLayout.X_AXIS)); p.setBorder(BorderFactory.createEmptyBorder(3, 3, 3, 3)); // setToolTipText(" Channel: " + String.valueOf(getChannelID()) + " "); Dimension d = btnInstr.getPreferredSize(); btnInstr.setMaximumSize(new Dimension(Short.MAX_VALUE, d.height)); p.add(btnInstr); p.add(Box.createRigidArea(new Dimension(6, 0))); lStreams.setHorizontalAlignment(JLabel.CENTER); lVoices.setHorizontalAlignment(JLabel.CENTER); JPanel statPane = new JPanel(); statPane.setBorder(BorderFactory.createLoweredBevelBorder()); statPane.setLayout(new BoxLayout(statPane, BoxLayout.X_AXIS)); statPane.add(Box.createRigidArea(new Dimension(6, 0))); statPane.add(lStreams); statPane.add(new JLabel("/")); statPane.add(lVoices); statPane.add(Box.createRigidArea(new Dimension(6, 0))); p.add(statPane); p.add(Box.createRigidArea(new Dimension(6, 0))); btnMute.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0)); p.add(btnMute); p.add(Box.createRigidArea(new Dimension(6, 0))); btnSolo.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0)); p.add(btnSolo); p.add(Box.createRigidArea(new Dimension(6, 0))); JPanel volumePane = new JPanel(); volumePane.setBorder(BorderFactory.createLoweredBevelBorder()); volumePane.setLayout(new BoxLayout(volumePane, BoxLayout.X_AXIS)); volumePane.add(Box.createRigidArea(new Dimension(6, 0))); d = slVolume.getPreferredSize(); slVolume.setMaximumSize(new Dimension(d.width > 300 ? d.width : 300, d.height)); volumePane.add(slVolume); lVolume.setBorder(BorderFactory.createEmptyBorder(3, 6, 3, 6)); lVolume.setHorizontalAlignment(lVolume.RIGHT); // We use this to set the size of the lVolume that will be used in setVolume() // to prevent the frequent resizing of lVolume lVolume.setText("100%"); volumePane.add(lVolume); p.add(volumePane); p.add(Box.createRigidArea(new Dimension(6, 0))); btnProperties.setContentAreaFilled(false); btnProperties.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0)); btnProperties.setIcon(iconShowProperties); btnProperties.setSelectedIcon(iconHideProperties); p.add(btnProperties); mainPane.add(p); propertiesPane = new ChannelProperties(model); propertiesPane.setBorder(BorderFactory.createEmptyBorder(0, 3, 3, 3)); propertiesPane.setVisible(false); mainPane.add(propertiesPane); add(mainPane); d = getPreferredSize(); setMaximumSize(new Dimension(getMaximumSize().width, d.height)); getModel().addSamplerChannelListener(getHandler()); actInstr = new AbstractAction() { public void actionPerformed(ActionEvent e) { if (actInstr.isEnabled()) loadInstrument(); } }; btnInstr.addActionListener(actInstr); btnMute.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent e) { changeMute(); } }); btnSolo.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent e) { changeSolo(); } }); slVolume.addChangeListener( new ChangeListener() { public void stateChanged(ChangeEvent e) { setVolume(); } }); btnProperties.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent e) { showProperties(btnProperties.isSelected()); String s; if (btnProperties.isSelected()) { s = i18n.getButtonLabel("Channel.ttHideProps"); } else { s = i18n.getButtonLabel("Channel.ttShowProps"); } btnProperties.setToolTipText(s); } }); btnProperties.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR)); String s; if (btnProperties.isSelected()) s = i18n.getButtonLabel("Channel.ttHideProps"); else s = i18n.getButtonLabel("Channel.ttShowProps"); btnProperties.setToolTipText(s); addPropertyChangeListener(getHandler()); updateChannelInfo(); }