/* * Copyright (C) 2014 GG-Net GmbH - Oliver Günther * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ package eu.ggnet.dwoss.receipt.product; import java.util.*; import javax.swing.DefaultComboBoxModel; import javax.swing.UIManager; import eu.ggnet.dwoss.receipt.CheckBoxTableNoteModel; import eu.ggnet.dwoss.receipt.UiUtil; import eu.ggnet.dwoss.spec.entity.BasicSpec; import eu.ggnet.dwoss.spec.entity.BasicSpec.Color; import eu.ggnet.dwoss.spec.entity.BasicSpec.VideoPort; import eu.ggnet.dwoss.spec.entity.ProductSpec.Extra; import eu.ggnet.dwoss.util.CloseType; import eu.ggnet.dwoss.util.NamedEnumCellRenderer; import eu.ggnet.dwoss.util.OkCancelDialog; /** * * @author pascal.perau */ public class BasicView extends AbstractView<BasicSpec> { CheckBoxTableNoteModel<Extra> extrasModel = new CheckBoxTableNoteModel(Arrays.asList(Extra.class.getEnumConstants()), "Ausstattung"); CheckBoxTableNoteModel<VideoPort> videoPortModel = new CheckBoxTableNoteModel(Arrays.asList(VideoPort.class.getEnumConstants()), "Ausstattung"); private BasicSpec basicSpec; /** Creates new form BasicView */ public BasicView() { initComponents(); extrasTable.setModel(extrasModel); extrasModel.setTable(extrasTable); videoPortTable.setModel(videoPortModel); videoPortModel.setTable(videoPortTable); Color[] colors = Arrays.copyOf(Color.values(), Color.values().length + 1); NamedEnumCellRenderer renderer = new NamedEnumCellRenderer(); colorBox.setModel(new DefaultComboBoxModel(colors)); colorBox.setRenderer(renderer); colorBox.setSelectedItem(null); UiUtil.spaceSelection(extrasTable); UiUtil.spaceSelection(videoPortTable); } @Override public void setSpec(BasicSpec basicSpec) { Set<Extra> extras = basicSpec.getDefaultExtras(); extras.addAll(basicSpec.getExtras()); extrasModel.setFiltered(extras); extrasModel.setMarked(basicSpec.getExtras()); colorBox.setSelectedItem(basicSpec.getColor()); videoPortModel.setMarked(basicSpec.getVideoPorts()); noteArea.setText(basicSpec.getComment()); this.basicSpec = basicSpec; } @Override public BasicSpec getSpec() { if (basicSpec == null) basicSpec = new BasicSpec(); basicSpec.setColor((Color)colorBox.getSelectedItem()); basicSpec.setExtras(extrasModel.getMarked()); basicSpec.setVideoPorts(videoPortModel.getMarked()); basicSpec.setComment(noteArea.getText()); return basicSpec; } /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */ @SuppressWarnings("unchecked") // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents private void initComponents() { colorBox = new javax.swing.JComboBox(); jLabel1 = new javax.swing.JLabel(); jScrollPane1 = new javax.swing.JScrollPane(); noteArea = new javax.swing.JTextArea(); jLabel2 = new javax.swing.JLabel(); jScrollPane2 = new javax.swing.JScrollPane(); videoPortTable = new javax.swing.JTable(); jScrollPane3 = new javax.swing.JScrollPane(); extrasTable = new javax.swing.JTable(); colorBox.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" })); colorBox.setMinimumSize(new java.awt.Dimension(72, 28)); colorBox.setPreferredSize(new java.awt.Dimension(72, 28)); jLabel1.setText("Farbe:"); noteArea.setColumns(20); noteArea.setLineWrap(true); noteArea.setRows(5); noteArea.setWrapStyleWord(true); jScrollPane1.setViewportView(noteArea); jLabel2.setText("Bemerkung/Beschreibung"); videoPortTable.setModel(new javax.swing.table.DefaultTableModel( new Object [][] { {null, null, null, null}, {null, null, null, null}, {null, null, null, null}, {null, null, null, null} }, new String [] { "Title 1", "Title 2", "Title 3", "Title 4" } )); jScrollPane2.setViewportView(videoPortTable); extrasTable.setModel(new javax.swing.table.DefaultTableModel( new Object [][] { {null, null, null, null}, {null, null, null, null}, {null, null, null, null}, {null, null, null, null} }, new String [] { "Title 1", "Title 2", "Title 3", "Title 4" } )); jScrollPane3.setViewportView(extrasTable); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this); this.setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addContainerGap() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jScrollPane3, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE) .addComponent(jLabel1) .addComponent(colorBox, javax.swing.GroupLayout.PREFERRED_SIZE, 265, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addComponent(jLabel2) .addGap(0, 0, Short.MAX_VALUE)) .addComponent(jScrollPane1, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 298, Short.MAX_VALUE) .addComponent(jScrollPane2, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE)) .addContainerGap()) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() .addGap(0, 0, 0) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, 163, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jLabel2) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 130, Short.MAX_VALUE)) .addGroup(layout.createSequentialGroup() .addComponent(jScrollPane3, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jLabel1) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(colorBox, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))) ); }// </editor-fold>//GEN-END:initComponents // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JComboBox colorBox; private javax.swing.JTable extrasTable; private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel2; private javax.swing.JScrollPane jScrollPane1; private javax.swing.JScrollPane jScrollPane2; private javax.swing.JScrollPane jScrollPane3; private javax.swing.JTextArea noteArea; private javax.swing.JTable videoPortTable; // End of variables declaration//GEN-END:variables public static void main(String[] args) throws Exception { UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); BasicSpec basic = new BasicSpec(); basic.setColor(Color.RED); basic.setComment("Der große Kommentar"); basic.setExtras(EnumSet.of(Extra.BLUETOOTH, Extra.CARD_READER)); basic.setVideoPorts(EnumSet.of(VideoPort.HDMI, VideoPort.VGA)); BasicView view = new BasicView(); view.setSpec(basic); OkCancelDialog<BasicView> dialog = new OkCancelDialog<>("", view); dialog.setVisible(true); if (dialog.getCloseType() == CloseType.OK) { System.out.println(view.getSpec()); } System.exit(0); } }