Search in sources :

Example 71 with MouseAdapter

use of java.awt.event.MouseAdapter in project JMRI by JMRI.

the class SwitchboardEditor method createControlPanel.

/** Create the setup pane for the top of the frame.
     * From layeredpane demo
     */
private JPanel createControlPanel() {
    JPanel controls = new JPanel();
    // navigation top row and to set range
    navBarPanel = new JPanel();
    navBarPanel.setLayout(new BoxLayout(navBarPanel, BoxLayout.X_AXIS));
    navBarPanel.add(prev);
    prev.addMouseListener(new MouseAdapter() {

        @Override
        public void mouseClicked(MouseEvent e) {
            int oldMin = (Integer) minSpinner.getValue();
            int oldMax = (Integer) maxSpinner.getValue();
            _range = oldMax - oldMin;
            minSpinner.setValue(Math.max(rangeMin, oldMin - _range - 1));
            maxSpinner.setValue(Math.max(oldMax - _range - 1, Math.max(rangeMax, oldMax - _range - 1)));
            log.debug("oldMin =" + oldMin + ", oldMax =" + oldMax);
        //rangeMin = (Integer) minSpinner.getValue();
        //rangeMax = (Integer) maxSpinner.getValue();
        }
    });
    prev.setToolTipText(Bundle.getMessage("PreviousToolTip"));
    navBarPanel.add(new JLabel(Bundle.getMessage("MakeLabel", Bundle.getMessage("From"))));
    navBarPanel.add(minSpinner);
    navBarPanel.add(new JLabel(Bundle.getMessage("MakeLabel", Bundle.getMessage("UpTo"))));
    navBarPanel.add(maxSpinner);
    navBarPanel.add(next);
    next.addMouseListener(new MouseAdapter() {

        @Override
        public void mouseClicked(MouseEvent e) {
            int oldMin = (Integer) minSpinner.getValue();
            int oldMax = (Integer) maxSpinner.getValue();
            _range = oldMax - oldMin;
            minSpinner.setValue(oldMax + 1);
            maxSpinner.setValue(oldMax + _range + 1);
        //rangeMin = (Integer) minSpinner.getValue();
        //rangeMax = (Integer) maxSpinner.getValue();
        }
    });
    next.setToolTipText(Bundle.getMessage("NextToolTip"));
    navBarPanel.add(Box.createHorizontalGlue());
    // put on which Frame?
    // on 2nd Editor Panel
    controls.add(navBarPanel);
    //super.getTargetFrame().add(navBarPanel); // on (top of) Switchboard Frame/Panel
    controls.setBorder(BorderFactory.createTitledBorder(Bundle.getMessage("SelectRangeTitle")));
    return controls;
}
Also used : JPanel(javax.swing.JPanel) MouseEvent(java.awt.event.MouseEvent) BoxLayout(javax.swing.BoxLayout) MouseAdapter(java.awt.event.MouseAdapter) JLabel(javax.swing.JLabel)

Example 72 with MouseAdapter

use of java.awt.event.MouseAdapter in project JMRI by JMRI.

the class TurnoutTableAction method createModel.

/**
     * Create the JTable DataModel, along with the changes for the specific case
     * of Turnouts.
     */
@Override
protected void createModel() {
    // store the terminology
    closedText = turnManager.getClosedText();
    thrownText = turnManager.getThrownText();
    // load graphic state column display preference
    // from apps/GuiLafConfigPane.java
    _graphicState = InstanceManager.getDefault(GuiLafPreferencesManager.class).isGraphicTableState();
    // create the data model object that drives the table
    // note that this is a class creation, and very long
    m = new BeanTableDataModel() {

        @Override
        public int getColumnCount() {
            return DIVERGCOL + 1;
        }

        @Override
        public String getColumnName(int col) {
            if (col == INVERTCOL) {
                return Bundle.getMessage("Inverted");
            } else if (col == LOCKCOL) {
                return Bundle.getMessage("Locked");
            } else if (col == KNOWNCOL) {
                return Bundle.getMessage("Feedback");
            } else if (col == MODECOL) {
                return Bundle.getMessage("ModeLabel");
            } else if (col == SENSOR1COL) {
                return Bundle.getMessage("BlockSensor") + "1";
            } else if (col == SENSOR2COL) {
                return Bundle.getMessage("BlockSensor") + "2";
            } else if (col == OPSONOFFCOL) {
                return Bundle.getMessage("TurnoutAutomationMenu");
            } else if (col == OPSEDITCOL) {
                return "";
            } else if (col == LOCKOPRCOL) {
                return Bundle.getMessage("LockMode");
            } else if (col == LOCKDECCOL) {
                return Bundle.getMessage("Decoder");
            } else if (col == DIVERGCOL) {
                return Bundle.getMessage("ThrownSpeed");
            } else if (col == STRAIGHTCOL) {
                return Bundle.getMessage("ClosedSpeed");
            } else if (col == EDITCOL) {
                return "";
            } else {
                return super.getColumnName(col);
            }
        }

        @Override
        public Class<?> getColumnClass(int col) {
            if (col == INVERTCOL) {
                return Boolean.class;
            } else if (col == LOCKCOL) {
                return Boolean.class;
            } else if (col == KNOWNCOL) {
                return String.class;
            } else if (col == MODECOL) {
                return JComboBox.class;
            } else if (col == SENSOR1COL) {
                return JComboBox.class;
            } else if (col == SENSOR2COL) {
                return JComboBox.class;
            } else if (col == OPSONOFFCOL) {
                return JComboBox.class;
            } else if (col == OPSEDITCOL) {
                return JButton.class;
            } else if (col == EDITCOL) {
                return JButton.class;
            } else if (col == LOCKOPRCOL) {
                return JComboBox.class;
            } else if (col == LOCKDECCOL) {
                return JComboBox.class;
            } else if (col == DIVERGCOL) {
                return JComboBox.class;
            } else if (col == STRAIGHTCOL) {
                return JComboBox.class;
            } else if (col == VALUECOL && _graphicState) {
                // use an image to show turnout state
                return JLabel.class;
            } else {
                return super.getColumnClass(col);
            }
        }

        @Override
        public int getPreferredWidth(int col) {
            switch(col) {
                case INVERTCOL:
                    return new JTextField(6).getPreferredSize().width;
                case LOCKCOL:
                    return new JTextField(6).getPreferredSize().width;
                case LOCKOPRCOL:
                    return new JTextField(10).getPreferredSize().width;
                case LOCKDECCOL:
                    return new JTextField(10).getPreferredSize().width;
                case KNOWNCOL:
                    return new JTextField(10).getPreferredSize().width;
                case MODECOL:
                    return new JTextField(10).getPreferredSize().width;
                case SENSOR1COL:
                    return new JTextField(5).getPreferredSize().width;
                case SENSOR2COL:
                    return new JTextField(5).getPreferredSize().width;
                case OPSONOFFCOL:
                    return new JTextField(14).getPreferredSize().width;
                case OPSEDITCOL:
                    return new JTextField(7).getPreferredSize().width;
                case EDITCOL:
                    return new JTextField(7).getPreferredSize().width;
                case DIVERGCOL:
                    return new JTextField(14).getPreferredSize().width;
                case STRAIGHTCOL:
                    return new JTextField(14).getPreferredSize().width;
                default:
                    super.getPreferredWidth(col);
            }
            return super.getPreferredWidth(col);
        }

        @Override
        public boolean isCellEditable(int row, int col) {
            String name = sysNameList.get(row);
            TurnoutManager manager = turnManager;
            Turnout t = manager.getBySystemName(name);
            if (col == INVERTCOL) {
                return t.canInvert();
            } else if (col == LOCKCOL) {
                return t.canLock(Turnout.CABLOCKOUT + Turnout.PUSHBUTTONLOCKOUT);
            } else if (col == KNOWNCOL) {
                return false;
            } else if (col == MODECOL) {
                return true;
            } else if (col == SENSOR1COL) {
                return true;
            } else if (col == SENSOR2COL) {
                return true;
            } else if (col == OPSONOFFCOL) {
                return true;
            } else if (col == OPSEDITCOL) {
                return t.getTurnoutOperation() != null;
            } else if (col == LOCKOPRCOL) {
                return true;
            } else if (col == LOCKDECCOL) {
                return true;
            } else if (col == DIVERGCOL) {
                return true;
            } else if (col == STRAIGHTCOL) {
                return true;
            } else if (col == EDITCOL) {
                return true;
            } else {
                return super.isCellEditable(row, col);
            }
        }

        @Override
        public Object getValueAt(int row, int col) {
            // some error checking
            if (row >= sysNameList.size()) {
                log.debug("row is greater than name list");
                return "error";
            }
            String name = sysNameList.get(row);
            TurnoutManager manager = turnManager;
            Turnout t = manager.getBySystemName(name);
            if (t == null) {
                log.debug("error null turnout!");
                return "error";
            }
            if (col == INVERTCOL) {
                boolean val = t.getInverted();
                return Boolean.valueOf(val);
            } else if (col == LOCKCOL) {
                boolean val = t.getLocked(Turnout.CABLOCKOUT + Turnout.PUSHBUTTONLOCKOUT);
                return Boolean.valueOf(val);
            } else if (col == KNOWNCOL) {
                if (t.getKnownState() == Turnout.CLOSED) {
                    return closedText;
                }
                if (t.getKnownState() == Turnout.THROWN) {
                    return thrownText;
                }
                if (t.getKnownState() == Turnout.INCONSISTENT) {
                    return Bundle.getMessage("BeanStateInconsistent");
                } else {
                    // "Unknown"
                    return Bundle.getMessage("BeanStateUnknown");
                }
            } else if (col == MODECOL) {
                JComboBox<String> c = new JComboBox<String>(t.getValidFeedbackNames());
                c.setSelectedItem(t.getFeedbackModeName());
                c.addActionListener(new ActionListener() {

                    @Override
                    public void actionPerformed(ActionEvent e) {
                        comboBoxAction(e);
                    }
                });
                return c;
            } else if (col == SENSOR1COL) {
                return t.getFirstSensor();
            } else if (col == SENSOR2COL) {
                return t.getSecondSensor();
            } else if (col == OPSONOFFCOL) {
                return makeAutomationBox(t);
            } else if (col == OPSEDITCOL) {
                return Bundle.getMessage("EditTurnoutOperation");
            } else if (col == EDITCOL) {
                return Bundle.getMessage("ButtonEdit");
            } else if (col == LOCKDECCOL) {
                JComboBox<String> c = new JComboBox<String>(t.getValidDecoderNames());
                c.setSelectedItem(t.getDecoderName());
                c.addActionListener(new ActionListener() {

                    @Override
                    public void actionPerformed(ActionEvent e) {
                        comboBoxAction(e);
                    }
                });
                return c;
            } else if (col == LOCKOPRCOL) {
                JComboBox<String> c = new JComboBox<String>(lockOperations);
                if (t.canLock(Turnout.CABLOCKOUT) && t.canLock(Turnout.PUSHBUTTONLOCKOUT)) {
                    c.setSelectedItem(bothText);
                } else if (t.canLock(Turnout.PUSHBUTTONLOCKOUT)) {
                    c.setSelectedItem(pushbutText);
                } else if (t.canLock(Turnout.CABLOCKOUT)) {
                    c.setSelectedItem(cabOnlyText);
                } else {
                    c.setSelectedItem(noneText);
                }
                c.addActionListener(new ActionListener() {

                    @Override
                    public void actionPerformed(ActionEvent e) {
                        comboBoxAction(e);
                    }
                });
                return c;
            } else if (col == STRAIGHTCOL) {
                String speed = t.getStraightSpeed();
                if (!speedListClosed.contains(speed)) {
                    speedListClosed.add(speed);
                }
                JComboBox<String> c = new JComboBox<String>(speedListClosed);
                c.setEditable(true);
                c.setSelectedItem(speed);
                return c;
            } else if (col == DIVERGCOL) {
                String speed = t.getDivergingSpeed();
                if (!speedListThrown.contains(speed)) {
                    speedListThrown.add(speed);
                }
                JComboBox<String> c = new JComboBox<String>(speedListThrown);
                c.setEditable(true);
                c.setSelectedItem(speed);
                return c;
            // } else if (col == VALUECOL && _graphicState) { // not neeeded as the
            //  graphic ImageIconRenderer uses the same super.getValueAt(row, col) as classic bean state text button
            }
            return super.getValueAt(row, col);
        }

        @Override
        public void setValueAt(Object value, int row, int col) {
            String name = sysNameList.get(row);
            TurnoutManager manager = turnManager;
            Turnout t = manager.getBySystemName(name);
            if (col == INVERTCOL) {
                if (t.canInvert()) {
                    boolean b = ((Boolean) value).booleanValue();
                    t.setInverted(b);
                }
            } else if (col == LOCKCOL) {
                boolean b = ((Boolean) value).booleanValue();
                t.setLocked(Turnout.CABLOCKOUT + Turnout.PUSHBUTTONLOCKOUT, b);
            } else if (col == MODECOL) {
                @SuppressWarnings("unchecked") String modeName = (String) ((JComboBox<String>) value).getSelectedItem();
                t.setFeedbackMode(modeName);
            } else if (col == SENSOR1COL) {
                try {
                    t.provideFirstFeedbackSensor((String) value);
                } catch (jmri.JmriException e) {
                    JOptionPane.showMessageDialog(null, e.toString());
                }
                fireTableRowsUpdated(row, row);
            } else if (col == SENSOR2COL) {
                try {
                    t.provideSecondFeedbackSensor((String) value);
                } catch (jmri.JmriException e) {
                    JOptionPane.showMessageDialog(null, e.toString());
                }
                fireTableRowsUpdated(row, row);
            } else if (col == OPSONOFFCOL) {
            // do nothing as this is handled by the combo box listener
            } else if (col == OPSEDITCOL) {
                t.setInhibitOperation(false);
                // cast to JComboBox<String> required in OPSEDITCOL
                @SuppressWarnings("unchecked") JComboBox<String> cb = (JComboBox<String>) getValueAt(row, OPSONOFFCOL);
                log.debug("opsSelected = {}", getValueAt(row, OPSONOFFCOL).toString());
                editTurnoutOperation(t, cb);
            } else if (col == EDITCOL) {
                class WindowMaker implements Runnable {

                    Turnout t;

                    WindowMaker(Turnout t) {
                        this.t = t;
                    }

                    @Override
                    public void run() {
                        editButton(t);
                    }
                }
                WindowMaker w = new WindowMaker(t);
                javax.swing.SwingUtilities.invokeLater(w);
            } else if (col == LOCKOPRCOL) {
                @SuppressWarnings("unchecked") String lockOpName = (String) ((JComboBox<String>) value).getSelectedItem();
                if (lockOpName.equals(bothText)) {
                    t.enableLockOperation(Turnout.CABLOCKOUT + Turnout.PUSHBUTTONLOCKOUT, true);
                }
                if (lockOpName.equals(cabOnlyText)) {
                    t.enableLockOperation(Turnout.CABLOCKOUT, true);
                    t.enableLockOperation(Turnout.PUSHBUTTONLOCKOUT, false);
                }
                if (lockOpName.equals(pushbutText)) {
                    t.enableLockOperation(Turnout.CABLOCKOUT, false);
                    t.enableLockOperation(Turnout.PUSHBUTTONLOCKOUT, true);
                }
            } else if (col == LOCKDECCOL) {
                @SuppressWarnings("unchecked") String decoderName = (String) ((JComboBox<String>) value).getSelectedItem();
                t.setDecoderName(decoderName);
            } else if (col == STRAIGHTCOL) {
                @SuppressWarnings("unchecked") String speed = (String) ((JComboBox<String>) value).getSelectedItem();
                try {
                    t.setStraightSpeed(speed);
                } catch (jmri.JmriException ex) {
                    JOptionPane.showMessageDialog(null, ex.getMessage() + "\n" + speed);
                    return;
                }
                if ((!speedListClosed.contains(speed)) && !speed.contains("Global")) {
                    speedListClosed.add(speed);
                }
                fireTableRowsUpdated(row, row);
            } else if (col == DIVERGCOL) {
                @SuppressWarnings("unchecked") String speed = (String) ((JComboBox<String>) value).getSelectedItem();
                try {
                    t.setDivergingSpeed(speed);
                } catch (jmri.JmriException ex) {
                    JOptionPane.showMessageDialog(null, ex.getMessage() + "\n" + speed);
                    return;
                }
                if ((!speedListThrown.contains(speed)) && !speed.contains("Global")) {
                    speedListThrown.add(speed);
                }
                fireTableRowsUpdated(row, row);
            } else if (col == VALUECOL && _graphicState) {
                // respond to clicking on ImageIconRenderer CellEditor
                clickOn(t);
                fireTableRowsUpdated(row, row);
            } else {
                super.setValueAt(value, row, col);
            }
        }

        @Override
        public String getValue(String name) {
            int val = turnManager.getBySystemName(name).getCommandedState();
            switch(val) {
                case Turnout.CLOSED:
                    return closedText;
                case Turnout.THROWN:
                    return thrownText;
                case Turnout.UNKNOWN:
                    return Bundle.getMessage("BeanStateUnknown");
                case Turnout.INCONSISTENT:
                    return Bundle.getMessage("BeanStateInconsistent");
                default:
                    return "Unexpected value: " + val;
            }
        }

        @Override
        public Manager getManager() {
            return turnManager;
        }

        @Override
        public NamedBean getBySystemName(String name) {
            return turnManager.getBySystemName(name);
        }

        @Override
        public NamedBean getByUserName(String name) {
            return turnManager.getByUserName(name);
        }

        @Override
        protected String getMasterClassName() {
            return getClassName();
        }

        @Override
        public void clickOn(NamedBean t) {
            int state = ((Turnout) t).getCommandedState();
            if (state == Turnout.CLOSED) {
                ((Turnout) t).setCommandedState(Turnout.THROWN);
            } else {
                ((Turnout) t).setCommandedState(Turnout.CLOSED);
            }
        }

        @Override
        public void configureTable(JTable tbl) {
            table = tbl;
            table.setDefaultRenderer(Boolean.class, new EnablingCheckboxRenderer());
            table.setDefaultRenderer(JComboBox.class, new jmri.jmrit.symbolicprog.ValueRenderer());
            table.setDefaultEditor(JComboBox.class, new jmri.jmrit.symbolicprog.ValueEditor());
            setColumnToHoldButton(table, OPSEDITCOL, editButton());
            setColumnToHoldButton(table, EDITCOL, editButton());
            //Hide the following columns by default
            XTableColumnModel columnModel = (XTableColumnModel) table.getColumnModel();
            TableColumn column = columnModel.getColumnByModelIndex(STRAIGHTCOL);
            columnModel.setColumnVisible(column, false);
            column = columnModel.getColumnByModelIndex(DIVERGCOL);
            columnModel.setColumnVisible(column, false);
            column = columnModel.getColumnByModelIndex(KNOWNCOL);
            columnModel.setColumnVisible(column, false);
            column = columnModel.getColumnByModelIndex(MODECOL);
            columnModel.setColumnVisible(column, false);
            column = columnModel.getColumnByModelIndex(SENSOR1COL);
            columnModel.setColumnVisible(column, false);
            column = columnModel.getColumnByModelIndex(SENSOR2COL);
            columnModel.setColumnVisible(column, false);
            column = columnModel.getColumnByModelIndex(OPSONOFFCOL);
            columnModel.setColumnVisible(column, false);
            column = columnModel.getColumnByModelIndex(OPSEDITCOL);
            columnModel.setColumnVisible(column, false);
            column = columnModel.getColumnByModelIndex(LOCKOPRCOL);
            columnModel.setColumnVisible(column, false);
            column = columnModel.getColumnByModelIndex(LOCKDECCOL);
            columnModel.setColumnVisible(column, false);
            super.configureTable(table);
        }

        // update table if turnout lock or feedback changes
        @Override
        protected boolean matchPropertyName(java.beans.PropertyChangeEvent e) {
            if (e.getPropertyName().equals("locked")) {
                return true;
            }
            if (e.getPropertyName().equals("feedbackchange")) {
                return true;
            }
            if (e.getPropertyName().equals("TurnoutDivergingSpeedChange")) {
                return true;
            }
            if (e.getPropertyName().equals("TurnoutStraightSpeedChange")) {
                return true;
            } else {
                return super.matchPropertyName(e);
            }
        }

        public void comboBoxAction(ActionEvent e) {
            if (log.isDebugEnabled()) {
                log.debug("Combobox change");
            }
            if (table != null && table.getCellEditor() != null) {
                table.getCellEditor().stopCellEditing();
            }
        }

        @Override
        public void propertyChange(java.beans.PropertyChangeEvent e) {
            if (e.getPropertyName().equals("DefaultTurnoutClosedSpeedChange")) {
                updateClosedList();
            } else if (e.getPropertyName().equals("DefaultTurnoutThrownSpeedChange")) {
                updateThrownList();
            } else {
                super.propertyChange(e);
            }
        }

        @Override
        protected String getBeanType() {
            return Bundle.getMessage("BeanNameTurnout");
        }

        /**
             * Customize the turnout table Value (State) column to show an appropriate graphic for the turnout state
             * if _graphicState = true, or (default) just show the localized state text
             * when the TableDataModel is being called from ListedTableAction.
             *
             * @param table a JTable of Turnouts
             */
        @Override
        protected void configValueColumn(JTable table) {
            // have the value column hold a JPanel (icon)
            //setColumnToHoldButton(table, VALUECOL, new JLabel("12345678")); // for larger, wide round icon, but cannot be converted to JButton
            // add extras, override BeanTableDataModel
            log.debug("Turnout configValueColumn (I am {})", super.toString());
            if (_graphicState) {
                // load icons, only once
                // editor
                table.setDefaultEditor(JLabel.class, new ImageIconRenderer());
                // item class copied from SwitchboardEditor panel
                table.setDefaultRenderer(JLabel.class, new ImageIconRenderer());
            } else {
                // classic text style state indication
                super.configValueColumn(table);
            }
        }

        @Override
        public JTable makeJTable(@Nonnull String name, @Nonnull TableModel model, @Nullable RowSorter<? extends TableModel> sorter) {
            JTable table = this.makeJTable(model);
            table.setName(name);
            table.setRowSorter(sorter);
            table.getTableHeader().setReorderingAllowed(true);
            table.setColumnModel(new XTableColumnModel());
            table.createDefaultColumnsFromModel();
            addMouseListenerToHeader(table);
            return table;
        }

        @Override
        public JTable makeJTable(TableSorter sorter) {
            JTable table = this.makeJTable((TableModel) sorter);
            table.getTableHeader().setReorderingAllowed(true);
            table.setColumnModel(new XTableColumnModel());
            table.createDefaultColumnsFromModel();
            addMouseListenerToHeader(table);
            return table;
        }

        private JTable makeJTable(TableModel model) {
            return new JTable(model) {

                @Override
                public TableCellRenderer getCellRenderer(int row, int column) {
                    // Convert the displayed index to the model index, rather than the displayed index
                    int modelColumn = this.convertColumnIndexToModel(column);
                    if (modelColumn == SENSOR1COL || modelColumn == SENSOR2COL) {
                        return getRenderer(row, modelColumn);
                    } else {
                        return super.getCellRenderer(row, column);
                    }
                }

                @Override
                public TableCellEditor getCellEditor(int row, int column) {
                    //Convert the displayed index to the model index, rather than the displayed index
                    int modelColumn = this.convertColumnIndexToModel(column);
                    if (modelColumn == SENSOR1COL || modelColumn == SENSOR2COL) {
                        return getEditor(row, modelColumn);
                    } else {
                        return super.getCellEditor(row, column);
                    }
                }

                TableCellRenderer getRenderer(int row, int column) {
                    TableCellRenderer retval = null;
                    if (column == SENSOR1COL) {
                        retval = rendererMapSensor1.get(getModel().getValueAt(row, SYSNAMECOL));
                    } else if (column == SENSOR2COL) {
                        retval = rendererMapSensor2.get(getModel().getValueAt(row, SYSNAMECOL));
                    } else {
                        return null;
                    }
                    if (retval == null) {
                        Turnout t = turnManager.getBySystemName((String) getModel().getValueAt(row, SYSNAMECOL));
                        if (t == null) {
                            return null;
                        }
                        retval = new BeanBoxRenderer();
                        if (column == SENSOR1COL) {
                            ((JmriBeanComboBox) retval).setSelectedBean(t.getFirstSensor());
                            rendererMapSensor1.put(getModel().getValueAt(row, SYSNAMECOL), retval);
                        } else {
                            ((JmriBeanComboBox) retval).setSelectedBean(t.getSecondSensor());
                            rendererMapSensor2.put(getModel().getValueAt(row, SYSNAMECOL), retval);
                        }
                    }
                    return retval;
                }

                Hashtable<Object, TableCellRenderer> rendererMapSensor1 = new Hashtable<>();

                Hashtable<Object, TableCellRenderer> rendererMapSensor2 = new Hashtable<>();

                TableCellEditor getEditor(int row, int column) {
                    TableCellEditor retval = null;
                    switch(column) {
                        case SENSOR1COL:
                            retval = editorMapSensor1.get(getModel().getValueAt(row, SYSNAMECOL));
                            break;
                        case SENSOR2COL:
                            retval = editorMapSensor2.get(getModel().getValueAt(row, SYSNAMECOL));
                            break;
                        default:
                            return null;
                    }
                    if (retval == null) {
                        Turnout t = turnManager.getBySystemName((String) getModel().getValueAt(row, SYSNAMECOL));
                        if (t == null) {
                            return null;
                        }
                        JmriBeanComboBox c;
                        if (column == SENSOR1COL) {
                            c = new JmriBeanComboBox(InstanceManager.sensorManagerInstance(), t.getFirstSensor(), JmriBeanComboBox.DisplayOptions.DISPLAYNAME);
                            retval = new BeanComboBoxEditor(c);
                            editorMapSensor1.put(getModel().getValueAt(row, SYSNAMECOL), retval);
                        } else {
                            //Must be two
                            c = new JmriBeanComboBox(InstanceManager.sensorManagerInstance(), t.getSecondSensor(), JmriBeanComboBox.DisplayOptions.DISPLAYNAME);
                            retval = new BeanComboBoxEditor(c);
                            editorMapSensor2.put(getModel().getValueAt(row, SYSNAMECOL), retval);
                        }
                        c.setFirstItemBlank(true);
                    }
                    return retval;
                }

                Hashtable<Object, TableCellEditor> editorMapSensor1 = new Hashtable<>();

                Hashtable<Object, TableCellEditor> editorMapSensor2 = new Hashtable<>();
            };
        }

        /**
             * Visualize state in table as a graphic, customized for Turnouts (4 states).
             * Renderer and Editor are identical, as the cell contents are not actually edited,
             * only used to toggle state using {@link #clickOn(NamedBean)}.
             * @see jmri.jmrit.beantable.sensor.SensorTableDataModel.ImageIconRenderer
             * @see jmri.jmrit.beantable.BlockTableAction#createModel()
             * @see jmri.jmrit.beantable.LightTableAction#createModel()
             */
        class ImageIconRenderer extends AbstractCellEditor implements TableCellEditor, TableCellRenderer {

            protected JLabel label;

            // also used in display.switchboardEditor
            protected String rootPath = "resources/icons/misc/switchboard/";

            // for Turnout
            protected char beanTypeChar = 'T';

            protected String onIconPath = rootPath + beanTypeChar + "-on-s.png";

            protected String offIconPath = rootPath + beanTypeChar + "-off-s.png";

            protected BufferedImage onImage;

            protected BufferedImage offImage;

            protected ImageIcon onIcon;

            protected ImageIcon offIcon;

            protected int iconHeight = -1;

            @Override
            public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
                log.debug("Renderer Item = {}, State = {}", row, value);
                if (iconHeight < 0) {
                    // load resources only first time, either for renderer or editor
                    loadIcons();
                    log.debug("icons loaded");
                }
                return updateLabel((String) value, row);
            }

            @Override
            public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {
                log.debug("Renderer Item = {}, State = {}", row, value);
                if (iconHeight < 0) {
                    // load resources only first time, either for renderer or editor
                    loadIcons();
                    log.debug("icons loaded");
                }
                return updateLabel((String) value, row);
            }

            public JLabel updateLabel(String value, int row) {
                if (iconHeight > 0) {
                    // if necessary, increase row height;
                    table.setRowHeight(row, Math.max(table.getRowHeight(), iconHeight - 5));
                }
                if (value.equals(closedText) && offIcon != null) {
                    label = new JLabel(offIcon);
                    label.setVerticalAlignment(JLabel.BOTTOM);
                    log.debug("offIcon set");
                } else if (value.equals(thrownText) && onIcon != null) {
                    label = new JLabel(onIcon);
                    label.setVerticalAlignment(JLabel.BOTTOM);
                    log.debug("onIcon set");
                } else if (value.equals(Bundle.getMessage("BeanStateInconsistent"))) {
                    // centered text alignment
                    label = new JLabel("X", JLabel.CENTER);
                    label.setForeground(Color.red);
                    log.debug("Turnout state inconsistent");
                    iconHeight = 0;
                } else if (value.equals(Bundle.getMessage("BeanStateUnknown"))) {
                    // centered text alignment
                    label = new JLabel("?", JLabel.CENTER);
                    log.debug("Turnout state unknown");
                    iconHeight = 0;
                } else {
                    // failed to load icon
                    // centered text alignment
                    label = new JLabel(value, JLabel.CENTER);
                    log.warn("Error reading icons for TurnoutTable");
                    iconHeight = 0;
                }
                label.setToolTipText(value);
                label.addMouseListener(new MouseAdapter() {

                    @Override
                    public final void mousePressed(MouseEvent evt) {
                        log.debug("Clicked on icon in row {}", row);
                        stopCellEditing();
                    }
                });
                return label;
            }

            @Override
            public Object getCellEditorValue() {
                log.debug("getCellEditorValue, me = {})", this.toString());
                return this.toString();
            }

            /**
                 * Read and buffer graphics. Only called once for this table.
                 * @see #getTableCellEditorComponent(JTable, Object, boolean, int, int)
                 */
            protected void loadIcons() {
                try {
                    onImage = ImageIO.read(new File(onIconPath));
                    offImage = ImageIO.read(new File(offIconPath));
                } catch (IOException ex) {
                    log.error("error reading image from {} or {}", onIconPath, offIconPath, ex);
                }
                log.debug("Success reading images");
                int imageWidth = onImage.getWidth();
                int imageHeight = onImage.getHeight();
                // scale icons 50% to fit in table rows
                Image smallOnImage = onImage.getScaledInstance(imageWidth / 2, imageHeight / 2, Image.SCALE_DEFAULT);
                Image smallOffImage = offImage.getScaledInstance(imageWidth / 2, imageHeight / 2, Image.SCALE_DEFAULT);
                onIcon = new ImageIcon(smallOnImage);
                offIcon = new ImageIcon(smallOffImage);
                iconHeight = onIcon.getIconHeight();
            }
        }
    };
// end of custom data model
}
Also used : ActionEvent(java.awt.event.ActionEvent) TurnoutOperationManager(jmri.TurnoutOperationManager) InstanceManager(jmri.InstanceManager) TurnoutManager(jmri.TurnoutManager) GuiLafPreferencesManager(apps.gui.GuiLafPreferencesManager) Manager(jmri.Manager) Image(java.awt.Image) BufferedImage(java.awt.image.BufferedImage) JmriBeanComboBox(jmri.util.swing.JmriBeanComboBox) TableCellEditor(javax.swing.table.TableCellEditor) TableCellRenderer(javax.swing.table.TableCellRenderer) TableColumn(javax.swing.table.TableColumn) ActionListener(java.awt.event.ActionListener) JTable(javax.swing.JTable) Turnout(jmri.Turnout) File(java.io.File) TableModel(javax.swing.table.TableModel) TableSorter(jmri.util.com.sun.TableSorter) ImageIcon(javax.swing.ImageIcon) NamedBean(jmri.NamedBean) JButton(javax.swing.JButton) JTextField(javax.swing.JTextField) BufferedImage(java.awt.image.BufferedImage) AbstractCellEditor(javax.swing.AbstractCellEditor) MouseEvent(java.awt.event.MouseEvent) JComboBox(javax.swing.JComboBox) Hashtable(java.util.Hashtable) MouseAdapter(java.awt.event.MouseAdapter) JLabel(javax.swing.JLabel) IOException(java.io.IOException) XTableColumnModel(jmri.util.swing.XTableColumnModel) TurnoutManager(jmri.TurnoutManager)

Example 73 with MouseAdapter

use of java.awt.event.MouseAdapter in project android by JetBrains.

the class MemoryMonitorView method populateUi.

@Override
protected void populateUi(JPanel container, Choreographer choreographer) {
    container.setLayout(new TabularLayout("*", "*"));
    Range viewRange = getMonitor().getTimeline().getViewRange();
    Range dataRange = getMonitor().getTimeline().getDataRange();
    final JLabel label = new JLabel(getMonitor().getName());
    label.setBorder(MONITOR_LABEL_PADDING);
    label.setVerticalAlignment(JLabel.TOP);
    Range leftYRange = new Range(0, 0);
    final JPanel axisPanel = new JBPanel(new BorderLayout());
    axisPanel.setOpaque(false);
    AxisComponent.Builder builder = new AxisComponent.Builder(leftYRange, MEMORY_AXIS_FORMATTER, AxisComponent.AxisOrientation.RIGHT).showAxisLine(false).showMax(true).showUnitAtMax(true).clampToMajorTicks(true).setMarkerLengths(MARKER_LENGTH, MARKER_LENGTH).setMargins(0, Y_AXIS_TOP_MARGIN);
    final AxisComponent leftAxis = builder.build();
    axisPanel.add(leftAxis, BorderLayout.WEST);
    final JPanel lineChartPanel = new JBPanel(new BorderLayout());
    lineChartPanel.setOpaque(false);
    lineChartPanel.setBorder(BorderFactory.createEmptyBorder(Y_AXIS_TOP_MARGIN, 0, 0, 0));
    final LineChart lineChart = new LineChart();
    RangedContinuousSeries memSeries = new RangedContinuousSeries("Memory", viewRange, leftYRange, getMonitor().getTotalMemory());
    lineChart.addLine(memSeries, new LineConfig(ProfilerColors.MEMORY_TOTAL).setFilled(true));
    lineChartPanel.add(lineChart, BorderLayout.CENTER);
    final LegendComponent legend = new LegendComponent(LegendComponent.Orientation.HORIZONTAL, LEGEND_UPDATE_FREQUENCY_MS);
    legend.setLegendData(Collections.singletonList(lineChart.createLegendRenderData(memSeries, MEMORY_AXIS_FORMATTER, dataRange)));
    final JPanel legendPanel = new JBPanel(new BorderLayout());
    legendPanel.setOpaque(false);
    legendPanel.add(label, BorderLayout.WEST);
    legendPanel.add(legend, BorderLayout.EAST);
    choreographer.register(lineChart);
    choreographer.register(leftAxis);
    choreographer.register(legend);
    container.add(legendPanel, new TabularLayout.Constraint(0, 0));
    container.add(leftAxis, new TabularLayout.Constraint(0, 0));
    container.add(lineChartPanel, new TabularLayout.Constraint(0, 0));
    container.addMouseListener(new MouseAdapter() {

        @Override
        public void mouseReleased(MouseEvent e) {
            getMonitor().expand();
        }
    });
}
Also used : MouseEvent(java.awt.event.MouseEvent) TabularLayout(com.android.tools.adtui.TabularLayout) MouseAdapter(java.awt.event.MouseAdapter) AxisComponent(com.android.tools.adtui.AxisComponent) Range(com.android.tools.adtui.model.Range) LineConfig(com.android.tools.adtui.chart.linechart.LineConfig) JBPanel(com.intellij.ui.components.JBPanel) RangedContinuousSeries(com.android.tools.adtui.model.RangedContinuousSeries) LegendComponent(com.android.tools.adtui.LegendComponent) LineChart(com.android.tools.adtui.chart.linechart.LineChart)

Example 74 with MouseAdapter

use of java.awt.event.MouseAdapter in project JMRI by JMRI.

the class LightTableAction method createModel.

/**
     * Create the JTable DataModel, along with the changes for the specific case
     * of Lights.
     */
@Override
protected void createModel() {
    // load graphic state column display preference
    _graphicState = InstanceManager.getDefault(GuiLafPreferencesManager.class).isGraphicTableState();
    m = new BeanTableDataModel() {

        public static final int ENABLECOL = NUMCOLUMN;

        public static final int INTENSITYCOL = ENABLECOL + 1;

        public static final int EDITCOL = INTENSITYCOL + 1;

        protected String enabledString = Bundle.getMessage("ColumnHeadEnabled");

        protected String intensityString = Bundle.getMessage("ColumnHeadIntensity");

        @Override
        public int getColumnCount() {
            return NUMCOLUMN + 3;
        }

        @Override
        public String getColumnName(int col) {
            if (col == EDITCOL) {
                // no heading on "Edit"
                return "";
            }
            if (col == INTENSITYCOL) {
                return intensityString;
            }
            if (col == ENABLECOL) {
                return enabledString;
            } else {
                return super.getColumnName(col);
            }
        }

        @Override
        public Class<?> getColumnClass(int col) {
            if (col == EDITCOL) {
                return JButton.class;
            }
            if (col == INTENSITYCOL) {
                return Double.class;
            }
            if (col == ENABLECOL) {
                return Boolean.class;
            } else if (col == VALUECOL && _graphicState) {
                // use an image to show light state
                return JLabel.class;
            } else {
                return super.getColumnClass(col);
            }
        }

        @Override
        public int getPreferredWidth(int col) {
            // override default value for UserName column
            if (col == USERNAMECOL) {
                return new JTextField(16).getPreferredSize().width;
            }
            if (col == EDITCOL) {
                return new JTextField(6).getPreferredSize().width;
            }
            if (col == INTENSITYCOL) {
                return new JTextField(6).getPreferredSize().width;
            }
            if (col == ENABLECOL) {
                return new JTextField(6).getPreferredSize().width;
            } else {
                return super.getPreferredWidth(col);
            }
        }

        @Override
        public boolean isCellEditable(int row, int col) {
            if (col == EDITCOL) {
                return true;
            }
            if (col == INTENSITYCOL) {
                return ((Light) getBySystemName((String) getValueAt(row, SYSNAMECOL))).isIntensityVariable();
            }
            if (col == ENABLECOL) {
                return true;
            } else {
                return super.isCellEditable(row, col);
            }
        }

        @Override
        public String getValue(String name) {
            Light l = lightManager.getBySystemName(name);
            if (l == null) {
                return ("Failed to find " + name);
            }
            int val = l.getState();
            switch(val) {
                case Light.ON:
                    return Bundle.getMessage("LightStateOn");
                case Light.INTERMEDIATE:
                    return Bundle.getMessage("LightStateIntermediate");
                case Light.OFF:
                    return Bundle.getMessage("LightStateOff");
                case Light.TRANSITIONINGTOFULLON:
                    return Bundle.getMessage("LightStateTransitioningToFullOn");
                case Light.TRANSITIONINGHIGHER:
                    return Bundle.getMessage("LightStateTransitioningHigher");
                case Light.TRANSITIONINGLOWER:
                    return Bundle.getMessage("LightStateTransitioningLower");
                case Light.TRANSITIONINGTOFULLOFF:
                    return Bundle.getMessage("LightStateTransitioningToFullOff");
                default:
                    return "Unexpected value: " + val;
            }
        }

        @Override
        public Object getValueAt(int row, int col) {
            switch(col) {
                case EDITCOL:
                    return Bundle.getMessage("ButtonEdit");
                case INTENSITYCOL:
                    return ((Light) getBySystemName((String) getValueAt(row, SYSNAMECOL))).getTargetIntensity();
                case ENABLECOL:
                    return ((Light) getBySystemName((String) getValueAt(row, SYSNAMECOL))).getEnabled();
                default:
                    return super.getValueAt(row, col);
            }
        }

        @Override
        public void setValueAt(Object value, int row, int col) {
            switch(col) {
                case EDITCOL:
                    // Use separate Runnable so window is created on top
                    class WindowMaker implements Runnable {

                        int row;

                        WindowMaker(int r) {
                            row = r;
                        }

                        @Override
                        public void run() {
                            // set up to edit
                            addPressed(null);
                            fixedSystemName.setText((String) getValueAt(row, SYSNAMECOL));
                            // don't really want to stop Light w/o user action
                            editPressed();
                        }
                    }
                    WindowMaker t = new WindowMaker(row);
                    javax.swing.SwingUtilities.invokeLater(t);
                    break;
                case INTENSITYCOL:
                    // alternate
                    try {
                        Light l = (Light) getBySystemName((String) getValueAt(row, SYSNAMECOL));
                        double intensity = ((Double) value);
                        if (intensity < 0) {
                            intensity = 0;
                        }
                        if (intensity > 1.0) {
                            intensity = 1.0;
                        }
                        l.setTargetIntensity(intensity);
                    } catch (IllegalArgumentException e1) {
                        status1.setText(Bundle.getMessage("LightError16"));
                    }
                    break;
                case ENABLECOL:
                    // alternate
                    Light l = (Light) getBySystemName((String) getValueAt(row, SYSNAMECOL));
                    boolean v = l.getEnabled();
                    l.setEnabled(!v);
                    break;
                case VALUECOL:
                    if (_graphicState) {
                        // respond to clicking on ImageIconRenderer CellEditor
                        Light ll = (Light) getBySystemName((String) getValueAt(row, SYSNAMECOL));
                        clickOn(ll);
                        fireTableRowsUpdated(row, row);
                        break;
                    }
                //$FALL-THROUGH$
                default:
                    super.setValueAt(value, row, col);
                    break;
            }
        }

        /**
             * Delete the bean after all the checking has been done.
             * <P>
             * Deactivate the light, then use the superclass to delete it.
             */
        @Override
        void doDelete(NamedBean bean) {
            ((Light) bean).deactivateLight();
            super.doDelete(bean);
        }

        // all properties update for now
        @Override
        protected boolean matchPropertyName(java.beans.PropertyChangeEvent e) {
            return true;
        }

        @Override
        public Manager getManager() {
            return lightManager;
        }

        @Override
        public NamedBean getBySystemName(String name) {
            return lightManager.getBySystemName(name);
        }

        @Override
        public NamedBean getByUserName(String name) {
            return lightManager.getByUserName(name);
        }

        @Override
        protected String getMasterClassName() {
            return getClassName();
        }

        @Override
        public void clickOn(NamedBean t) {
            int oldState = ((Light) t).getState();
            int newState;
            switch(oldState) {
                case Light.ON:
                    newState = Light.OFF;
                    break;
                case Light.OFF:
                    newState = Light.ON;
                    break;
                default:
                    newState = Light.OFF;
                    log.warn("Unexpected Light state " + oldState + " becomes OFF");
                    break;
            }
            ((Light) t).setState(newState);
        }

        @Override
        public JButton configureButton() {
            return new JButton(" " + Bundle.getMessage("LightStateOff") + " ");
        }

        @Override
        protected String getBeanType() {
            return Bundle.getMessage("BeanNameLight");
        }

        /**
             * Customize the light table Value (State) column to show an appropriate graphic for the light state
             * if _graphicState = true, or (default) just show the localized state text
             * when the TableDataModel is being called from ListedTableAction.
             *
             * @param table a JTable of Lights
             */
        @Override
        protected void configValueColumn(JTable table) {
            // have the value column hold a JPanel (icon)
            //setColumnToHoldButton(table, VALUECOL, new JLabel("123456")); // for small round icon, but cannot be converted to JButton
            // add extras, override BeanTableDataModel
            log.debug("Light configValueColumn (I am {})", super.toString());
            if (_graphicState) {
                // load icons, only once
                // editor
                table.setDefaultEditor(JLabel.class, new ImageIconRenderer());
                // item class copied from SwitchboardEditor panel
                table.setDefaultRenderer(JLabel.class, new ImageIconRenderer());
            } else {
                // classic text style state indication
                super.configValueColumn(table);
            }
        }

        /**
             * Visualize state in table as a graphic, customized for Lights (2 states + ... for transitioning).
             * Renderer and Editor are identical, as the cell contents are not actually edited,
             * only used to toggle state using {@link #clickOn(NamedBean)}.
             * @see jmri.jmrit.beantable.sensor.SensorTableDataModel.ImageIconRenderer
             * @see jmri.jmrit.beantable.BlockTableAction#createModel()
             * @see jmri.jmrit.beantable.TurnoutTableAction#createModel()
             */
        class ImageIconRenderer extends AbstractCellEditor implements TableCellEditor, TableCellRenderer {

            protected JLabel label;

            // also used in display.switchboardEditor
            protected String rootPath = "resources/icons/misc/switchboard/";

            // for Light
            protected char beanTypeChar = 'L';

            protected String onIconPath = rootPath + beanTypeChar + "-on-s.png";

            protected String offIconPath = rootPath + beanTypeChar + "-off-s.png";

            protected BufferedImage onImage;

            protected BufferedImage offImage;

            protected ImageIcon onIcon;

            protected ImageIcon offIcon;

            protected int iconHeight = -1;

            @Override
            public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
                log.debug("Renderer Item = {}, State = {}", row, value);
                if (iconHeight < 0) {
                    // load resources only first time, either for renderer or editor
                    loadIcons();
                    log.debug("icons loaded");
                }
                return updateLabel((String) value, row);
            }

            @Override
            public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {
                log.debug("Renderer Item = {}, State = {}", row, value);
                if (iconHeight < 0) {
                    // load resources only first time, either for renderer or editor
                    loadIcons();
                    log.debug("icons loaded");
                }
                return updateLabel((String) value, row);
            }

            public JLabel updateLabel(String value, int row) {
                if (iconHeight > 0) {
                // if necessary, increase row height;
                //table.setRowHeight(row, Math.max(table.getRowHeight(), iconHeight - 5)); // TODO adjust table row height for Lights
                }
                if (value.equals(Bundle.getMessage("LightStateOff")) && offIcon != null) {
                    label = new JLabel(offIcon);
                    label.setVerticalAlignment(JLabel.BOTTOM);
                    log.debug("offIcon set");
                } else if (value.equals(Bundle.getMessage("LightStateOn")) && onIcon != null) {
                    label = new JLabel(onIcon);
                    label.setVerticalAlignment(JLabel.BOTTOM);
                    log.debug("onIcon set");
                } else if (value.equals(Bundle.getMessage("BeanStateInconsistent"))) {
                    // centered text alignment
                    label = new JLabel("X", JLabel.CENTER);
                    label.setForeground(Color.red);
                    log.debug("Light state inconsistent");
                    iconHeight = 0;
                } else if (value.equals(Bundle.getMessage("LightStateIntermediate"))) {
                    // centered text alignment
                    label = new JLabel("...", JLabel.CENTER);
                    log.debug("Light state in transition");
                    iconHeight = 0;
                } else {
                    // failed to load icon
                    // centered text alignment
                    label = new JLabel(value, JLabel.CENTER);
                    log.warn("Error reading icons for LightTable");
                    iconHeight = 0;
                }
                label.setToolTipText(value);
                label.addMouseListener(new MouseAdapter() {

                    @Override
                    public final void mousePressed(MouseEvent evt) {
                        log.debug("Clicked on icon in row {}", row);
                        stopCellEditing();
                    }
                });
                return label;
            }

            @Override
            public Object getCellEditorValue() {
                log.debug("getCellEditorValue, me = {})", this.toString());
                return this.toString();
            }

            /**
                 * Read and buffer graphics. Only called once for this table.
                 * @see #getTableCellEditorComponent(JTable, Object, boolean, int, int)
                 */
            protected void loadIcons() {
                try {
                    onImage = ImageIO.read(new File(onIconPath));
                    offImage = ImageIO.read(new File(offIconPath));
                } catch (IOException ex) {
                    log.error("error reading image from {} or {}", onIconPath, offIconPath, ex);
                }
                log.debug("Success reading images");
                int imageWidth = onImage.getWidth();
                int imageHeight = onImage.getHeight();
                // scale icons 50% to fit in table rows
                Image smallOnImage = onImage.getScaledInstance(imageWidth / 2, imageHeight / 2, Image.SCALE_DEFAULT);
                Image smallOffImage = offImage.getScaledInstance(imageWidth / 2, imageHeight / 2, Image.SCALE_DEFAULT);
                onIcon = new ImageIcon(smallOnImage);
                offIcon = new ImageIcon(smallOffImage);
                iconHeight = onIcon.getIconHeight();
            }
        }
    };
// end of custom data model
}
Also used : ImageIcon(javax.swing.ImageIcon) NamedBean(jmri.NamedBean) JButton(javax.swing.JButton) JTextField(javax.swing.JTextField) LightManager(jmri.LightManager) InstanceManager(jmri.InstanceManager) GuiLafPreferencesManager(apps.gui.GuiLafPreferencesManager) Manager(jmri.Manager) Image(java.awt.Image) BufferedImage(java.awt.image.BufferedImage) BufferedImage(java.awt.image.BufferedImage) Light(jmri.Light) AbstractCellEditor(javax.swing.AbstractCellEditor) TableCellEditor(javax.swing.table.TableCellEditor) TableCellRenderer(javax.swing.table.TableCellRenderer) MouseEvent(java.awt.event.MouseEvent) MouseAdapter(java.awt.event.MouseAdapter) JLabel(javax.swing.JLabel) IOException(java.io.IOException) JTable(javax.swing.JTable) File(java.io.File)

Example 75 with MouseAdapter

use of java.awt.event.MouseAdapter in project android by JetBrains.

the class AccordionVisualTest method generateChart.

@NotNull
private LineChart generateChart(AccordionLayout layout, AccordionLayout.Orientation direction, int minSize, int preferredSize, int maxSize) {
    LineChart chart = new LineChart(mRangedData);
    if (direction == AccordionLayout.Orientation.VERTICAL) {
        chart.setMinimumSize(new Dimension(0, minSize));
        chart.setPreferredSize(new Dimension(0, preferredSize));
        chart.setMaximumSize(new Dimension(0, maxSize));
    } else {
        chart.setMinimumSize(new Dimension(minSize, 0));
        chart.setPreferredSize(new Dimension(preferredSize, 0));
        chart.setMaximumSize(new Dimension(maxSize, 0));
    }
    chart.setBorder(BorderFactory.createLineBorder(Color.GRAY));
    chart.setToolTipText("Double-click to maximize. Ctrl+Double-click to minimize.");
    chart.addMouseListener(new MouseAdapter() {

        @Override
        public void mouseClicked(MouseEvent e) {
            if (e.getClickCount() == DOUBLE_CLICK) {
                if (e.isControlDown()) {
                    layout.toggleMinimize(chart);
                } else {
                    layout.toggleMaximize(chart);
                }
            }
        }
    });
    addToChoreographer(chart);
    return chart;
}
Also used : MouseEvent(java.awt.event.MouseEvent) MouseAdapter(java.awt.event.MouseAdapter) LineChart(com.android.tools.adtui.chart.linechart.LineChart) NotNull(org.jetbrains.annotations.NotNull)

Aggregations

MouseAdapter (java.awt.event.MouseAdapter)202 MouseEvent (java.awt.event.MouseEvent)199 JLabel (javax.swing.JLabel)52 JPanel (javax.swing.JPanel)48 ActionEvent (java.awt.event.ActionEvent)36 JScrollPane (javax.swing.JScrollPane)36 BorderLayout (java.awt.BorderLayout)35 Dimension (java.awt.Dimension)34 JButton (javax.swing.JButton)33 ActionListener (java.awt.event.ActionListener)32 Insets (java.awt.Insets)24 GridBagConstraints (java.awt.GridBagConstraints)20 KeyEvent (java.awt.event.KeyEvent)20 KeyAdapter (java.awt.event.KeyAdapter)19 JTextField (javax.swing.JTextField)16 ListSelectionEvent (javax.swing.event.ListSelectionEvent)16 Component (java.awt.Component)15 Point (java.awt.Point)15 JTable (javax.swing.JTable)15 ListSelectionListener (javax.swing.event.ListSelectionListener)15