Search in sources :

Example 71 with JTable

use of javax.swing.JTable in project processdash by dtuma.

the class TaskDependencyCellEditor method buildUIComponents.

private void buildUIComponents(Map iconMap) {
    // first, create the button we'll use as our cell editor
    button = new JButton();
    button.setBackground(Color.white);
    button.setFont(UIManager.getFont("TextField.font"));
    button.setBorderPainted(false);
    button.setMargin(new Insets(0, 0, 0, 0));
    button.addKeyListener(EventHandler.create(KeyListener.class, button, "doClick"));
    button.addActionListener((ActionListener) EventHandler.create(ActionListener.class, this, "buttonClicked"));
    // now, create the components we'll show in the dialog.
    List components = new LinkedList();
    pathLabel = new JLabel("path label");
    components.add(pathLabel);
    components.add(Box.createRigidArea(new Dimension(5, 5)));
    dependencies = new DependencyTableModel();
    dependencyTable = new JTable(dependencies);
    dependencyTable.setDefaultRenderer(Object.class, new TaskDependencyCellRenderer());
    scrollPane = new JScrollPane(dependencyTable);
    components.add(scrollPane);
    components.add(Box.createRigidArea(new Dimension(5, 5)));
    taskTree = new WBSJTable(dependencySource.getTaskTree(), iconMap);
    taskTree.setEditingEnabled(false);
    AddAction addAction = new AddAction(taskTree);
    RemoveAction removeAction = new RemoveAction(dependencyTable);
    SaveChangesAction saveAction = new SaveChangesAction();
    // Configure key and mouse bindings for convenience
    bindKeys(dependencyTable, new TransferFocusAction(taskTree), "TAB");
    bindKeys(dependencyTable, removeAction, "BACK_SPACE", "DELETE", "SUBTRACT");
    bindKeys(dependencyTable, saveAction, "ENTER");
    bindKeys(taskTree, new TransferFocusAction(dependencyTable), "TAB");
    bindKeys(taskTree, addAction, "SPACE", "INSERT", "ADD");
    bindKeys(taskTree, saveAction, "ENTER");
    taskTree.getInputMap().put(KeyStroke.getKeyStroke("LEFT"), "collapseTree");
    taskTree.getInputMap().put(KeyStroke.getKeyStroke("RIGHT"), "expandTree");
    taskTree.addMouseListener(new WBSClickHandler(addAction));
    Box b = Box.createHorizontalBox();
    b.add(Box.createHorizontalGlue());
    b.add(new JButton(addAction));
    b.add(Box.createHorizontalGlue());
    b.add(new JButton(removeAction));
    b.add(Box.createHorizontalGlue());
    components.add(b);
    components.add(Box.createRigidArea(new Dimension(5, 5)));
    JScrollPane sp = new JScrollPane(taskTree);
    sp.setPreferredSize(new Dimension(300, 200));
    components.add(sp);
    components.add(new JOptionPaneTweaker.GrabFocus(taskTree));
    optionPane = new JOptionPane(components.toArray(), JOptionPane.PLAIN_MESSAGE, JOptionPane.OK_CANCEL_OPTION);
// we can't actually create the dialog yet, because we don't know
// who the parent window will be.
}
Also used : JScrollPane(javax.swing.JScrollPane) JOptionPaneTweaker(net.sourceforge.processdash.ui.lib.JOptionPaneTweaker) Insets(java.awt.Insets) JButton(javax.swing.JButton) JLabel(javax.swing.JLabel) Box(javax.swing.Box) Dimension(java.awt.Dimension) JOptionPane(javax.swing.JOptionPane) LinkedList(java.util.LinkedList) JTable(javax.swing.JTable) KeyListener(java.awt.event.KeyListener) LinkedList(java.util.LinkedList) List(java.util.List)

Example 72 with JTable

use of javax.swing.JTable in project sling by apache.

the class RequestListSelectionListener method valueChanged.

public void valueChanged(ListSelectionEvent e) {
    if (!e.getValueIsAdjusting()) {
        ListSelectionModel lsm = (ListSelectionModel) e.getSource();
        int idx = lsm.getMinSelectionIndex();
        if (idx >= 0) {
            try {
                idx = table.getRowSorter().convertRowIndexToModel(idx);
                TableModel tm = ((RequestTrackerFile) table.getModel()).getData(idx);
                if (dataField == null) {
                    dataField = new JTable();
                    dataField.setAutoCreateRowSorter(true);
                    dataField.setGridColor(Color.GRAY);
                    dataField.setShowGrid(true);
                    dataField.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
                    dataField.setRowSelectionAllowed(true);
                    dataField.setTableHeader(new JTableHeader(dataField.getColumnModel()));
                    dataField.setFont(new Font("Monospaced", dataField.getFont().getStyle(), dataField.getFont().getSize()));
                    dataField.setShowHorizontalLines(false);
                    //                        dataField.setIntercellSpacing(new Dimension(3, 5));
                    JDialog d = new JDialog(this.parent);
                    d.add(new JScrollPane(dataField));
                    d.addWindowListener(new WindowAdapter() {

                        @Override
                        public void windowClosing(WindowEvent e) {
                            dataField = null;
                        }
                    });
                    // setup location and size and ensure updating preferences
                    Util.setupComponentLocationSize(d, REQUEST_X, REQUEST_Y, REQUEST_WIDTH, REQUEST_HEIGHT, (int) screenSize.getWidth() / 4, (int) screenSize.getHeight() / 4, (int) screenSize.getWidth() / 2, (int) screenSize.getHeight() / 2);
                    d.setVisible(true);
                }
                dataField.setModel(tm);
                Util.setupColumnWidths(dataField.getColumnModel(), REQUEST_COLS);
            } catch (IOException e1) {
            // ignore
            }
        }
    }
}
Also used : JScrollPane(javax.swing.JScrollPane) ListSelectionModel(javax.swing.ListSelectionModel) JTableHeader(javax.swing.table.JTableHeader) WindowAdapter(java.awt.event.WindowAdapter) IOException(java.io.IOException) Font(java.awt.Font) JTable(javax.swing.JTable) WindowEvent(java.awt.event.WindowEvent) TableModel(javax.swing.table.TableModel) JDialog(javax.swing.JDialog)

Example 73 with JTable

use of javax.swing.JTable 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 74 with JTable

use of javax.swing.JTable in project JMRI by JMRI.

the class SignalGroupSubTableAction method editHead.

/**
     * Open an editor to set the details of a Signal Head as part of a Signal Group.
     * Called when user clicks the Edit button for a Head in the Add/Edit Signal Group pane.
     * @see SignalGroupTableAction#signalHeadEditPressed(int) SignalGroupTableAction.signalHeadEditPressed
     * @param g Parent Signal Head
     * @param headName System or User Name of this Signal Head
     */
void editHead(SignalGroup g, String headName) {
    curSignalGroup = g;
    curHeadName = headName;
    curSignalHead = jmri.InstanceManager.getDefault(jmri.SignalHeadManager.class).getSignalHead(curHeadName);
    // shows i18n strings from signal head definition
    _OnAppearance = new JComboBox<String>(curSignalHead.getValidStateNames());
    _OffAppearance = new JComboBox<String>(curSignalHead.getValidStateNames());
    _systemName = new JLabel(headName);
    _systemName.setVisible(true);
    jmri.TurnoutManager tm = InstanceManager.turnoutManagerInstance();
    List<String> systemNameList = tm.getSystemNameList();
    _turnoutList = new ArrayList<SignalGroupTurnout>(systemNameList.size());
    Iterator<String> iter = systemNameList.iterator();
    while (iter.hasNext()) {
        String systemName = iter.next();
        String userName = tm.getBySystemName(systemName).getUserName();
        _turnoutList.add(new SignalGroupTurnout(systemName, userName));
    }
    jmri.SensorManager sm = InstanceManager.sensorManagerInstance();
    systemNameList = sm.getSystemNameList();
    _sensorList = new ArrayList<SignalGroupSensor>(systemNameList.size());
    iter = systemNameList.iterator();
    while (iter.hasNext()) {
        String systemName = iter.next();
        Sensor sen = sm.getBySystemName(systemName);
        if (sen != null) {
            String userName = sen.getUserName();
            _sensorList.add(new SignalGroupSensor(systemName, userName));
        }
    }
    initializeIncludedList();
    // Set up sub panel for editing of a Signal Group Signal Head item
    if (addSubFrame == null) {
        // create one if not yet available
        addSubFrame = new JmriJFrame((Bundle.getMessage("EditSignalGroup") + " - " + Bundle.getMessage("BeanNameSignalHead")), false, true);
        addSubFrame.addHelpMenu("package.jmri.jmrit.beantable.SignalGroupAddEdit", true);
        addSubFrame.setLocation(100, 30);
        addSubFrame.getContentPane().setLayout(new BoxLayout(addSubFrame.getContentPane(), BoxLayout.Y_AXIS));
        Container contentPane = addSubFrame.getContentPane();
        // add system name label
        JPanel ps = new JPanel();
        ps.setLayout(new FlowLayout());
        ps.add(nameLabel);
        ps.add(_systemName);
        contentPane.add(ps);
        // add user name label
        JPanel pc = new JPanel();
        pc.setLayout(new FlowLayout());
        pc.add(signalOnStateLabel);
        // comboBox to set On Appearance
        pc.add(_OnAppearance);
        _OnAppearance.setToolTipText(Bundle.getMessage("StateWhenMetTooltip"));
        pc.add(spacer);
        pc.add(signalOffStateLabel);
        // comboBox to set On Appearance
        pc.add(_OffAppearance);
        _OffAppearance.setToolTipText(Bundle.getMessage("StateWhenNotMetTooltip"));
        contentPane.add(pc);
        JPanel p = new JPanel();
        p.setLayout(new FlowLayout());
        p.add(userLabel);
        contentPane.add(p);
        // fill in info for the Signal Head being configured
        if (curSignalHead.getClass().getName().contains("SingleTurnoutSignalHead")) {
            jmri.implementation.SingleTurnoutSignalHead stsh = (jmri.implementation.SingleTurnoutSignalHead) InstanceManager.getDefault(jmri.SignalHeadManager.class).getByUserName(curHeadName);
            // we may use a user name in the editing pane, so look for that first
            if (stsh == null) {
                stsh = (jmri.implementation.SingleTurnoutSignalHead) InstanceManager.getDefault(jmri.SignalHeadManager.class).getBySystemName(curHeadName);
            // when user name is empty, get by user name
            }
            if (stsh != null) {
                log.debug("SGsubTA #279 editHead: setting props for signal head {}", curHeadName);
                if ((g.getHeadOnState(curSignalHead) == 0x00) && (g.getHeadOffState(curSignalHead) == 0x00)) {
                    g.setHeadOnState(curSignalHead, stsh.getOnAppearance());
                    g.setHeadOffState(curSignalHead, stsh.getOffAppearance());
                }
            } else {
                // nothing found
                log.error("Failed to get signal head object named {}", curHeadName);
            }
        }
        setSignalHeadStateBox(g.getHeadOnState(curSignalHead), _OnAppearance);
        setSignalHeadStateBox(g.getHeadOffState(curSignalHead), _OffAppearance);
        // add Turnout Display Choice
        JPanel py = new JPanel();
        py.add(new JLabel(Bundle.getMessage("Show")));
        selGroup = new ButtonGroup();
        allButton = new JRadioButton(Bundle.getMessage("All"), true);
        selGroup.add(allButton);
        py.add(allButton);
        allButton.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                // Setup for display of all Turnouts, if needed
                if (!showAll) {
                    showAll = true;
                    _SignalGroupTurnoutModel.fireTableDataChanged();
                    _SignalGroupSensorModel.fireTableDataChanged();
                }
            }
        });
        includedButton = new JRadioButton(Bundle.getMessage("Included"), false);
        selGroup.add(includedButton);
        py.add(includedButton);
        includedButton.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                // Setup for display of included Turnouts only, if needed
                if (showAll) {
                    showAll = false;
                    initializeIncludedList();
                    _SignalGroupTurnoutModel.fireTableDataChanged();
                    _SignalGroupSensorModel.fireTableDataChanged();
                }
            }
        });
        py.add(new JLabel("  " + Bundle.getMessage("_and_", Bundle.getMessage("Turnouts"), Bundle.getMessage("Sensors"))));
        contentPane.add(py);
        // add turnout table
        p2xt = new JPanel();
        JPanel p2xtSpace = new JPanel();
        p2xtSpace.setLayout(new BoxLayout(p2xtSpace, BoxLayout.Y_AXIS));
        p2xtSpace.add(new JLabel("XXX"));
        p2xt.add(p2xtSpace);
        JPanel p21t = new JPanel();
        p21t.setLayout(new BoxLayout(p21t, BoxLayout.Y_AXIS));
        p21t.add(new JLabel(Bundle.getMessage("SelectInGroup", Bundle.getMessage("Turnouts"))));
        p2xt.add(p21t);
        _SignalGroupTurnoutModel = new SignalGroupTurnoutModel();
        JTable SignalGroupTurnoutTable = new JTable(_SignalGroupTurnoutModel);
        TableRowSorter<SignalGroupTurnoutModel> sgtSorter = new TableRowSorter<>(_SignalGroupTurnoutModel);
        sgtSorter.setComparator(SignalGroupTurnoutModel.SNAME_COLUMN, new SystemNameComparator());
        RowSorterUtil.setSortOrder(sgtSorter, SignalGroupTurnoutModel.SNAME_COLUMN, SortOrder.ASCENDING);
        SignalGroupTurnoutTable.setRowSorter(sgtSorter);
        SignalGroupTurnoutTable.setRowSelectionAllowed(false);
        SignalGroupTurnoutTable.setPreferredScrollableViewportSize(new java.awt.Dimension(480, 80));
        ROW_HEIGHT = SignalGroupTurnoutTable.getRowHeight();
        JComboBox<String> stateTCombo = new JComboBox<String>();
        stateTCombo.addItem(SET_TO_CLOSED);
        stateTCombo.addItem(SET_TO_THROWN);
        TableColumnModel SignalGroupTurnoutColumnModel = SignalGroupTurnoutTable.getColumnModel();
        TableColumn includeColumnT = SignalGroupTurnoutColumnModel.getColumn(SignalGroupTurnoutModel.INCLUDE_COLUMN);
        includeColumnT.setResizable(false);
        includeColumnT.setMinWidth(50);
        includeColumnT.setMaxWidth(60);
        TableColumn sNameColumnT = SignalGroupTurnoutColumnModel.getColumn(SignalGroupTurnoutModel.SNAME_COLUMN);
        sNameColumnT.setResizable(true);
        sNameColumnT.setMinWidth(75);
        sNameColumnT.setMaxWidth(95);
        TableColumn uNameColumnT = SignalGroupTurnoutColumnModel.getColumn(SignalGroupTurnoutModel.UNAME_COLUMN);
        uNameColumnT.setResizable(true);
        uNameColumnT.setMinWidth(210);
        uNameColumnT.setMaxWidth(260);
        TableColumn stateColumnT = SignalGroupTurnoutColumnModel.getColumn(SignalGroupTurnoutModel.STATE_COLUMN);
        stateColumnT.setCellEditor(new DefaultCellEditor(stateTCombo));
        stateColumnT.setResizable(false);
        stateColumnT.setMinWidth(90);
        stateColumnT.setMaxWidth(100);
        _SignalGroupTurnoutScrollPane = new JScrollPane(SignalGroupTurnoutTable);
        p2xt.add(_SignalGroupTurnoutScrollPane, BorderLayout.CENTER);
        contentPane.add(p2xt);
        p2xt.setVisible(true);
        JPanel po = new JPanel();
        po.setLayout(new FlowLayout());
        JLabel operLabel = new JLabel(Bundle.getMessage("ChooseOrAnd"));
        po.add(operLabel);
        po.add(_SensorTurnoutOper);
        contentPane.add(po);
        // add sensor table
        p2xs = new JPanel();
        JPanel p2xsSpace = new JPanel();
        p2xsSpace.setLayout(new BoxLayout(p2xsSpace, BoxLayout.Y_AXIS));
        p2xsSpace.add(new JLabel("XXX"));
        p2xs.add(p2xsSpace);
        JPanel p21s = new JPanel();
        p21s.setLayout(new BoxLayout(p21s, BoxLayout.Y_AXIS));
        p21s.add(new JLabel(Bundle.getMessage("SelectInGroup", Bundle.getMessage("Sensors"))));
        p2xs.add(p21s);
        _SignalGroupSensorModel = new SignalGroupSensorModel();
        JTable SignalGroupSensorTable = new JTable(_SignalGroupSensorModel);
        TableRowSorter<SignalGroupSensorModel> sgsSorter = new TableRowSorter<>(_SignalGroupSensorModel);
        sgsSorter.setComparator(SignalGroupSensorModel.SNAME_COLUMN, new SystemNameComparator());
        RowSorterUtil.setSortOrder(sgsSorter, SignalGroupSensorModel.SNAME_COLUMN, SortOrder.ASCENDING);
        SignalGroupSensorTable.setRowSorter(sgsSorter);
        SignalGroupSensorTable.setRowSelectionAllowed(false);
        SignalGroupSensorTable.setPreferredScrollableViewportSize(new java.awt.Dimension(480, 80));
        JComboBox<String> stateSCombo = new JComboBox<String>();
        stateSCombo.addItem(SET_TO_ACTIVE);
        stateSCombo.addItem(SET_TO_INACTIVE);
        TableColumnModel SignalGroupSensorColumnModel = SignalGroupSensorTable.getColumnModel();
        TableColumn includeColumnS = SignalGroupSensorColumnModel.getColumn(SignalGroupSensorModel.INCLUDE_COLUMN);
        includeColumnS.setResizable(false);
        includeColumnS.setMinWidth(50);
        includeColumnS.setMaxWidth(60);
        TableColumn sNameColumnS = SignalGroupSensorColumnModel.getColumn(SignalGroupSensorModel.SNAME_COLUMN);
        sNameColumnS.setResizable(true);
        sNameColumnS.setMinWidth(75);
        sNameColumnS.setMaxWidth(95);
        TableColumn uNameColumnS = SignalGroupSensorColumnModel.getColumn(SignalGroupSensorModel.UNAME_COLUMN);
        uNameColumnS.setResizable(true);
        uNameColumnS.setMinWidth(210);
        uNameColumnS.setMaxWidth(260);
        TableColumn stateColumnS = SignalGroupSensorColumnModel.getColumn(SignalGroupSensorModel.STATE_COLUMN);
        stateColumnS.setCellEditor(new DefaultCellEditor(stateSCombo));
        stateColumnS.setResizable(false);
        stateColumnS.setMinWidth(90);
        stateColumnS.setMaxWidth(100);
        _SignalGroupSensorScrollPane = new JScrollPane(SignalGroupSensorTable);
        p2xs.add(_SignalGroupSensorScrollPane, BorderLayout.CENTER);
        contentPane.add(p2xs);
        p2xs.setVisible(true);
        // add notes panel
        JPanel pa = new JPanel();
        pa.setLayout(new BoxLayout(pa, BoxLayout.Y_AXIS));
        JPanel p1 = new JPanel();
        p1.setLayout(new FlowLayout());
        p1.add(status1);
        pa.add(p1);
        Border pBorder = BorderFactory.createEtchedBorder();
        pa.setBorder(pBorder);
        contentPane.add(pa);
        // add buttons - Add SignalGroup button
        JPanel pb = new JPanel();
        pb.setLayout(new FlowLayout(FlowLayout.TRAILING));
        // add Cancel button
        pb.add(cancelButton);
        cancelButton.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                cancelSubPressed(e);
            }
        });
        // add Update SignalGroup button
        pb.add(updateSubButton);
        updateSubButton.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                updateSubPressed(e, false);
            }
        });
        updateSubButton.setToolTipText(Bundle.getMessage("TooltipUpdate"));
        p2xtSpace.setVisible(false);
        p2xsSpace.setVisible(false);
        updateSubButton.setVisible(true);
        contentPane.add(pb);
        addSubFrame.pack();
    }
    // set listener for window closing
    addSubFrame.addWindowListener(new java.awt.event.WindowAdapter() {

        @Override
        public void windowClosing(java.awt.event.WindowEvent e) {
            addSubFrame.setVisible(false);
            cancelSubEdit();
            _SignalGroupSensorModel.dispose();
            _SignalGroupTurnoutModel.dispose();
        }
    });
    addSubFrame.setVisible(true);
    // add AND/OR choice box
    setoperBox(curSignalGroup.getSensorTurnoutOper(curSignalHead), _SensorTurnoutOper);
    setSignalHeadStateBox(curSignalGroup.getHeadOnState(curSignalHead), _OnAppearance);
    setSignalHeadStateBox(curSignalGroup.getHeadOffState(curSignalHead), _OffAppearance);
    int setRow = 0;
    for (int i = _turnoutList.size() - 1; i >= 0; i--) {
        SignalGroupTurnout turnout = _turnoutList.get(i);
        Turnout tTurnout = turnout.getTurnout();
        if (curSignalGroup.isTurnoutIncluded(curSignalHead, tTurnout)) {
            turnout.setIncluded(true);
            turnout.setState(curSignalGroup.getTurnoutState(curSignalHead, tTurnout));
            setRow = i;
        } else {
            turnout.setIncluded(false);
            turnout.setState(Turnout.CLOSED);
        }
    }
    setRow -= 1;
    if (setRow < 0) {
        setRow = 0;
    }
    _SignalGroupTurnoutScrollPane.getVerticalScrollBar().setValue(setRow * ROW_HEIGHT);
    _SignalGroupTurnoutModel.fireTableDataChanged();
    for (int i = _sensorList.size() - 1; i >= 0; i--) {
        SignalGroupSensor sensor = _sensorList.get(i);
        Sensor tSensor = sensor.getSensor();
        if (curSignalGroup.isSensorIncluded(curSignalHead, tSensor)) {
            sensor.setIncluded(true);
            sensor.setState(curSignalGroup.getSensorState(curSignalHead, tSensor));
            setRow = i;
        } else {
            sensor.setIncluded(false);
            sensor.setState(Sensor.INACTIVE);
        }
    }
    status1.setText(updateInst);
    updateSubButton.setVisible(true);
}
Also used : JPanel(javax.swing.JPanel) FlowLayout(java.awt.FlowLayout) JRadioButton(javax.swing.JRadioButton) ActionEvent(java.awt.event.ActionEvent) BoxLayout(javax.swing.BoxLayout) TableColumnModel(javax.swing.table.TableColumnModel) Container(java.awt.Container) TableRowSorter(javax.swing.table.TableRowSorter) JScrollPane(javax.swing.JScrollPane) JComboBox(javax.swing.JComboBox) JLabel(javax.swing.JLabel) TableColumn(javax.swing.table.TableColumn) DefaultCellEditor(javax.swing.DefaultCellEditor) ActionListener(java.awt.event.ActionListener) JmriJFrame(jmri.util.JmriJFrame) ButtonGroup(javax.swing.ButtonGroup) JTable(javax.swing.JTable) SystemNameComparator(jmri.util.SystemNameComparator) Border(javax.swing.border.Border) Turnout(jmri.Turnout) Sensor(jmri.Sensor)

Example 75 with JTable

use of javax.swing.JTable in project JMRI by JMRI.

the class SectionTableAction method addEditPressed.

void addEditPressed() {
    pref = jmri.InstanceManager.getDefault(jmri.UserPreferencesManager.class);
    if (addFrame == null) {
        addFrame = new JmriJFrame(Bundle.getMessage("TitleAddSection"));
        addFrame.addHelpMenu("package.jmri.jmrit.beantable.SectionAddEdit", true);
        addFrame.getContentPane().setLayout(new BoxLayout(addFrame.getContentPane(), BoxLayout.Y_AXIS));
        JPanel p = new JPanel();
        p.setLayout(new FlowLayout());
        p.add(sysNameLabel);
        p.add(sysNameFixed);
        p.add(sysName);
        p.add(_autoSystemName);
        _autoSystemName.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                autoSystemName();
            }
        });
        if (pref.getSimplePreferenceState(systemNameAuto)) {
            _autoSystemName.setSelected(true);
        }
        sysName.setToolTipText(rbx.getString("SectionSystemNameHint"));
        p.add(new JLabel("     "));
        p.add(userNameLabel);
        p.add(userName);
        userName.setToolTipText(rbx.getString("SectionUserNameHint"));
        addFrame.getContentPane().add(p);
        JPanel pa = new JPanel();
        pa.setLayout(new FlowLayout());
        pa.add(generationStateLabel);
        addFrame.getContentPane().add(pa);
        addFrame.getContentPane().add(new JSeparator());
        JPanel p1 = new JPanel();
        p1.setLayout(new BoxLayout(p1, BoxLayout.Y_AXIS));
        JPanel p11 = new JPanel();
        p11.setLayout(new FlowLayout());
        p11.add(new JLabel(rbx.getString("BlockTableMessage")));
        p1.add(p11);
        JPanel p12 = new JPanel();
        // initialize table of blocks
        blockTableModel = new BlockTableModel();
        JTable blockTable = new JTable(blockTableModel);
        blockTable.setRowSelectionAllowed(false);
        blockTable.setPreferredScrollableViewportSize(new java.awt.Dimension(350, 100));
        TableColumnModel blockColumnModel = blockTable.getColumnModel();
        TableColumn sNameColumn = blockColumnModel.getColumn(BlockTableModel.SNAME_COLUMN);
        sNameColumn.setResizable(true);
        sNameColumn.setMinWidth(90);
        sNameColumn.setMaxWidth(130);
        TableColumn uNameColumn = blockColumnModel.getColumn(BlockTableModel.UNAME_COLUMN);
        uNameColumn.setResizable(true);
        uNameColumn.setMinWidth(210);
        uNameColumn.setMaxWidth(260);
        JScrollPane blockTableScrollPane = new JScrollPane(blockTable);
        p12.add(blockTableScrollPane, BorderLayout.CENTER);
        p1.add(p12);
        JPanel p13 = new JPanel();
        p13.setLayout(new FlowLayout());
        p13.add(deleteBlocks = new JButton(rbx.getString("DeleteAllBlocksButton")));
        deleteBlocks.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                deleteBlocksPressed(e);
            }
        });
        deleteBlocks.setToolTipText(rbx.getString("DeleteAllBlocksButtonHint"));
        p13.add(new JLabel("     "));
        p13.add(blockBox);
        blockBox.setToolTipText(rbx.getString("BlockBoxHint"));
        p13.add(addBlock = new JButton(rbx.getString("AddBlockButton")));
        addBlock.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                addBlockPressed(e);
            }
        });
        addBlock.setToolTipText(rbx.getString("AddBlockButtonHint"));
        p1.add(p13);
        addFrame.getContentPane().add(p1);
        addFrame.getContentPane().add(new JSeparator());
        JPanel p31 = new JPanel();
        p31.setLayout(new FlowLayout());
        p31.add(new JLabel(rbx.getString("EntryPointTable")));
        addFrame.getContentPane().add(p31);
        JPanel p32 = new JPanel();
        p32.setLayout(new FlowLayout());
        entryPointOptions = new ButtonGroup();
        p32.add(manually);
        entryPointOptions.add(manually);
        manually.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                manualEntryPoints = true;
            }
        });
        manually.setToolTipText(rbx.getString("SetManuallyHint"));
        p32.add(new JLabel("   "));
        p32.add(automatic);
        entryPointOptions.add(automatic);
        automatic.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                manualEntryPoints = false;
            }
        });
        automatic.setToolTipText(rbx.getString("SetAutomaticHint"));
        p32.add(layoutEditorBox);
        layoutEditorBox.setToolTipText(rbx.getString("LayoutEditorBoxHint"));
        layoutEditorBox.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                layoutEditorSelectionChanged();
            }
        });
        // djd debugging - temporarily hide these items until the automatic setting of entry point direction is ready
        //   addFrame.getContentPane().add(p32);
        // end djd debugging
        JPanel p33 = new JPanel();
        // initialize table of entry points
        entryPointTableModel = new EntryPointTableModel();
        JTable entryPointTable = new JTable(entryPointTableModel);
        entryPointTable.setRowSelectionAllowed(false);
        // GT - 12-Oct-2009
        entryPointTable.setPreferredScrollableViewportSize(new java.awt.Dimension(550, 100));
        TableColumnModel entryPointColumnModel = entryPointTable.getColumnModel();
        TableColumn fromBlockColumn = entryPointColumnModel.getColumn(EntryPointTableModel.BLOCK_COLUMN);
        fromBlockColumn.setResizable(true);
        fromBlockColumn.setMinWidth(250);
        fromBlockColumn.setMaxWidth(310);
        // GT - 12-Oct-2009 - start   
        TableColumn toBlockColumn = entryPointColumnModel.getColumn(EntryPointTableModel.TO_BLOCK_COLUMN);
        toBlockColumn.setResizable(true);
        toBlockColumn.setMinWidth(150);
        toBlockColumn.setMaxWidth(210);
        // GT - 12-Oct-2009 - end   
        JComboBox<String> directionCombo = new JComboBox<String>();
        directionCombo.addItem(rbx.getString("SectionForward"));
        directionCombo.addItem(rbx.getString("SectionReverse"));
        directionCombo.addItem(Bundle.getMessage("BeanStateUnknown"));
        TableColumn directionColumn = entryPointColumnModel.getColumn(EntryPointTableModel.DIRECTION_COLUMN);
        directionColumn.setCellEditor(new DefaultCellEditor(directionCombo));
        entryPointTable.setRowHeight(directionCombo.getPreferredSize().height);
        directionColumn.setPreferredWidth(directionCombo.getPreferredSize().width);
        directionColumn.setResizable(false);
        JScrollPane entryPointTableScrollPane = new JScrollPane(entryPointTable);
        p33.add(entryPointTableScrollPane, BorderLayout.CENTER);
        addFrame.getContentPane().add(p33);
        p33.setVisible(true);
        JPanel p34 = new JPanel();
        p34.setLayout(new FlowLayout());
        p34.add(new JLabel(rbx.getString("DirectionNote")));
        addFrame.getContentPane().add(p34);
        addFrame.getContentPane().add(new JSeparator());
        // set up for direction sensors
        JPanel p20 = new JPanel();
        p20.setLayout(new FlowLayout());
        p20.add(new JLabel(rbx.getString("DirectionSensorLabel")));
        addFrame.getContentPane().add(p20);
        JPanel p21 = new JPanel();
        p21.setLayout(new FlowLayout());
        p21.add(new JLabel(rbx.getString("ForwardSensor")));
        p21.add(forwardSensorField);
        forwardSensorField.setToolTipText(rbx.getString("ForwardSensorHint"));
        p21.add(new JLabel("     "));
        p21.add(new JLabel(rbx.getString("ReverseSensor")));
        p21.add(reverseSensorField);
        reverseSensorField.setToolTipText(rbx.getString("ReverseSensorHint"));
        addFrame.getContentPane().add(p21);
        addFrame.getContentPane().add(new JSeparator());
        // set up for stopping sensors
        JPanel p40 = new JPanel();
        p40.setLayout(new FlowLayout());
        p40.add(new JLabel(rbx.getString("StoppingSensorLabel")));
        addFrame.getContentPane().add(p40);
        JPanel p41 = new JPanel();
        p41.setLayout(new FlowLayout());
        p41.add(new JLabel(rbx.getString("ForwardStopSensor")));
        p41.add(forwardStopSensorField);
        forwardStopSensorField.setToolTipText(rbx.getString("ForwardStopSensorHint"));
        p41.add(new JLabel("     "));
        p41.add(new JLabel(rbx.getString("ReverseStopSensor")));
        p41.add(reverseStopSensorField);
        reverseStopSensorField.setToolTipText(rbx.getString("ReverseStopSensorHint"));
        addFrame.getContentPane().add(p41);
        addFrame.getContentPane().add(new JSeparator());
        // set up bottom buttons
        JButton cancel = null;
        JPanel pb = new JPanel();
        pb.setLayout(new FlowLayout());
        pb.add(cancel = new JButton(Bundle.getMessage("ButtonCancel")));
        cancel.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                cancelPressed(e);
            }
        });
        cancel.setToolTipText(rbx.getString("CancelButtonHint"));
        pb.add(create = new JButton(Bundle.getMessage("ButtonCreate")));
        create.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                createPressed(e);
            }
        });
        create.setToolTipText(rbx.getString("SectionCreateButtonHint"));
        pb.add(update = new JButton(Bundle.getMessage("ButtonUpdate")));
        update.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                updatePressed(e);
            }
        });
        update.setToolTipText(rbx.getString("SectionUpdateButtonHint"));
        addFrame.getContentPane().add(pb);
    }
    if (editMode) {
        // setup for edit window
        _autoSystemName.setVisible(false);
        sysNameLabel.setEnabled(true);
        create.setVisible(false);
        update.setVisible(true);
        sysName.setVisible(false);
        sysNameFixed.setVisible(true);
        initializeEditInformation();
    } else {
        // setup for create window
        _autoSystemName.setVisible(true);
        create.setVisible(true);
        update.setVisible(false);
        sysName.setVisible(true);
        sysNameFixed.setVisible(false);
        autoSystemName();
        clearForCreate();
    }
    // initialize layout editor panels
    if (initializeLayoutEditorCombo(layoutEditorBox)) {
        manually.setVisible(true);
        automatic.setVisible(true);
        layoutEditorBox.setVisible(true);
    } else {
        manually.setVisible(false);
        automatic.setVisible(false);
        layoutEditorBox.setVisible(false);
    }
    // initialize block combo - first time
    initializeBlockCombo();
    addFrame.pack();
    addFrame.setVisible(true);
}
Also used : JScrollPane(javax.swing.JScrollPane) JPanel(javax.swing.JPanel) FlowLayout(java.awt.FlowLayout) JComboBox(javax.swing.JComboBox) ActionEvent(java.awt.event.ActionEvent) BoxLayout(javax.swing.BoxLayout) JButton(javax.swing.JButton) JLabel(javax.swing.JLabel) TableColumnModel(javax.swing.table.TableColumnModel) TableColumn(javax.swing.table.TableColumn) JSeparator(javax.swing.JSeparator) DefaultCellEditor(javax.swing.DefaultCellEditor) ActionListener(java.awt.event.ActionListener) JmriJFrame(jmri.util.JmriJFrame) ButtonGroup(javax.swing.ButtonGroup) JTable(javax.swing.JTable)

Aggregations

JTable (javax.swing.JTable)584 JScrollPane (javax.swing.JScrollPane)282 JPanel (javax.swing.JPanel)217 Dimension (java.awt.Dimension)145 JButton (javax.swing.JButton)139 BorderLayout (java.awt.BorderLayout)133 JLabel (javax.swing.JLabel)129 ActionEvent (java.awt.event.ActionEvent)109 ActionListener (java.awt.event.ActionListener)81 TableColumn (javax.swing.table.TableColumn)79 DefaultTableModel (javax.swing.table.DefaultTableModel)75 Component (java.awt.Component)66 BoxLayout (javax.swing.BoxLayout)66 FlowLayout (java.awt.FlowLayout)58 MouseEvent (java.awt.event.MouseEvent)58 JTextField (javax.swing.JTextField)57 TableColumnModel (javax.swing.table.TableColumnModel)52 GridBagConstraints (java.awt.GridBagConstraints)46 TableCellRenderer (javax.swing.table.TableCellRenderer)43 Test (org.junit.Test)43