/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package org.demo.options.scanner; import java.awt.Component; import java.util.Collection; import java.util.List; import javax.swing.DefaultComboBoxModel; import javax.swing.DefaultListModel; import javax.swing.SwingUtilities; import org.demo.scannerservice.Scanner; import org.demo.scannerservice.ScannerManager; import org.demo.scannerservice.ScannerFactory; import org.openide.util.RequestProcessor; final class GeneralScannerOptionsPanel extends javax.swing.JPanel { private final DefaultComboBoxModel managerListModel = new DefaultComboBoxModel(); private final DefaultListModel scannerListModel = new DefaultListModel(); private final GeneralScannerOptionsOptionsPanelController controller; private final DefaultComboBoxModel resolutionListModel = new DefaultComboBoxModel(); private final DefaultComboBoxModel bitDepthComboModel = new DefaultComboBoxModel(); private final DefaultComboBoxModel modeComboModel = new DefaultComboBoxModel(); GeneralScannerOptionsPanel(GeneralScannerOptionsOptionsPanelController controller) { this.controller = controller; initComponents(); // TODO listen to changes in form fields and call controller.changed() } /** 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. */ // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents private void initComponents() { jLabel1 = new javax.swing.JLabel(); jScrollPane1 = new javax.swing.JScrollPane(); presetList = new javax.swing.JList(); jToolBar1 = new javax.swing.JToolBar(); addPresetBtn = new javax.swing.JButton(); removePresetBtn = new javax.swing.JButton(); savePresetBtn = new javax.swing.JButton(); jPanel1 = new javax.swing.JPanel(); jLabel2 = new javax.swing.JLabel(); presetNameEdit = new javax.swing.JTextField(); jLabel3 = new javax.swing.JLabel(); jLabel4 = new javax.swing.JLabel(); jScrollPane3 = new javax.swing.JScrollPane(); deviceList = new javax.swing.JList(); jLabel5 = new javax.swing.JLabel(); resolutionCombobox = new javax.swing.JComboBox(); jLabel6 = new javax.swing.JLabel(); bitDepthCombo = new javax.swing.JComboBox(); jLabel7 = new javax.swing.JLabel(); modeCombo = new javax.swing.JComboBox(); managersCombobox = new javax.swing.JComboBox(); org.openide.awt.Mnemonics.setLocalizedText(jLabel1, org.openide.util.NbBundle.getMessage(GeneralScannerOptionsPanel.class, "GeneralScannerOptionsPanel.jLabel1.text")); // NOI18N presetList.setModel(new javax.swing.AbstractListModel() { String[] strings = { "Item 1", "Item 2", "Item 3", "Item 4", "Item 5" }; public int getSize() { return strings.length; } public Object getElementAt(int i) { return strings[i]; } }); jScrollPane1.setViewportView(presetList); jToolBar1.setBorder(null); jToolBar1.setFloatable(false); jToolBar1.setRollover(true); org.openide.awt.Mnemonics.setLocalizedText(addPresetBtn, org.openide.util.NbBundle.getMessage(GeneralScannerOptionsPanel.class, "GeneralScannerOptionsPanel.addPresetBtn.text")); // NOI18N addPresetBtn.setFocusable(false); addPresetBtn.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER); addPresetBtn.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM); jToolBar1.add(addPresetBtn); org.openide.awt.Mnemonics.setLocalizedText(removePresetBtn, org.openide.util.NbBundle.getMessage(GeneralScannerOptionsPanel.class, "GeneralScannerOptionsPanel.removePresetBtn.text")); // NOI18N removePresetBtn.setFocusable(false); removePresetBtn.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER); removePresetBtn.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM); jToolBar1.add(removePresetBtn); org.openide.awt.Mnemonics.setLocalizedText(savePresetBtn, org.openide.util.NbBundle.getMessage(GeneralScannerOptionsPanel.class, "GeneralScannerOptionsPanel.savePresetBtn.text")); // NOI18N jToolBar1.add(savePresetBtn); jPanel1.setBorder(javax.swing.BorderFactory.createLineBorder(javax.swing.UIManager.getDefaults().getColor("InternalFrame.borderShadow"))); org.openide.awt.Mnemonics.setLocalizedText(jLabel2, org.openide.util.NbBundle.getMessage(GeneralScannerOptionsPanel.class, "GeneralScannerOptionsPanel.jLabel2.text")); // NOI18N presetNameEdit.setText(org.openide.util.NbBundle.getMessage(GeneralScannerOptionsPanel.class, "GeneralScannerOptionsPanel.presetNameEdit.text")); // NOI18N org.openide.awt.Mnemonics.setLocalizedText(jLabel3, org.openide.util.NbBundle.getMessage(GeneralScannerOptionsPanel.class, "GeneralScannerOptionsPanel.jLabel3.text")); // NOI18N org.openide.awt.Mnemonics.setLocalizedText(jLabel4, org.openide.util.NbBundle.getMessage(GeneralScannerOptionsPanel.class, "GeneralScannerOptionsPanel.jLabel4.text")); // NOI18N deviceList.setModel(scannerListModel); deviceList.addListSelectionListener(new javax.swing.event.ListSelectionListener() { public void valueChanged(javax.swing.event.ListSelectionEvent evt) { deviceListValueChanged(evt); } }); jScrollPane3.setViewportView(deviceList); org.openide.awt.Mnemonics.setLocalizedText(jLabel5, org.openide.util.NbBundle.getMessage(GeneralScannerOptionsPanel.class, "GeneralScannerOptionsPanel.jLabel5.text")); // NOI18N resolutionCombobox.setModel(resolutionListModel); org.openide.awt.Mnemonics.setLocalizedText(jLabel6, org.openide.util.NbBundle.getMessage(GeneralScannerOptionsPanel.class, "GeneralScannerOptionsPanel.jLabel6.text")); // NOI18N bitDepthCombo.setModel(bitDepthComboModel); org.openide.awt.Mnemonics.setLocalizedText(jLabel7, org.openide.util.NbBundle.getMessage(GeneralScannerOptionsPanel.class, "GeneralScannerOptionsPanel.jLabel7.text")); // NOI18N modeCombo.setModel(modeComboModel); managersCombobox.setModel(managerListModel); managersCombobox.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { managersComboboxActionPerformed(evt); } }); javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1); jPanel1.setLayout(jPanel1Layout); jPanel1Layout.setHorizontalGroup( jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel1Layout.createSequentialGroup() .addContainerGap() .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel1Layout.createSequentialGroup() .addComponent(jLabel2) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(presetNameEdit, javax.swing.GroupLayout.DEFAULT_SIZE, 506, Short.MAX_VALUE)) .addComponent(jLabel3) .addComponent(jLabel4) .addGroup(jPanel1Layout.createSequentialGroup() .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) .addComponent(jScrollPane3, javax.swing.GroupLayout.DEFAULT_SIZE, 291, Short.MAX_VALUE) .addComponent(managersCombobox, javax.swing.GroupLayout.PREFERRED_SIZE, 267, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGap(12, 12, 12) .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) .addGroup(javax.swing.GroupLayout.Alignment.LEADING, jPanel1Layout.createSequentialGroup() .addComponent(jLabel5) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(resolutionCombobox, 0, 171, Short.MAX_VALUE)) .addGroup(javax.swing.GroupLayout.Alignment.LEADING, jPanel1Layout.createSequentialGroup() .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jLabel7) .addComponent(jLabel6)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(bitDepthCombo, 0, 192, Short.MAX_VALUE) .addComponent(modeCombo, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))))) .addContainerGap()) ); jPanel1Layout.setVerticalGroup( jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel1Layout.createSequentialGroup() .addContainerGap() .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel2) .addComponent(presetNameEdit, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(jLabel3) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(managersCombobox, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jLabel4) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) .addGroup(jPanel1Layout.createSequentialGroup() .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel5) .addComponent(resolutionCombobox, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel7) .addComponent(modeCombo, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel6) .addComponent(bitDepthCombo, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))) .addComponent(jScrollPane3, 0, 0, Short.MAX_VALUE)) .addGap(200, 200, 200)) ); 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(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 141, Short.MAX_VALUE) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false) .addComponent(jLabel1, javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jToolBar1, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addContainerGap()) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addContainerGap() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) .addComponent(jPanel1, javax.swing.GroupLayout.Alignment.LEADING, 0, 250, Short.MAX_VALUE) .addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createSequentialGroup() .addComponent(jLabel1) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jToolBar1, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 195, Short.MAX_VALUE))) .addContainerGap()) ); }// </editor-fold>//GEN-END:initComponents private void managersComboboxActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_managersComboboxActionPerformed updateListScanners((ScannerManager) managersCombobox.getSelectedItem()); }//GEN-LAST:event_managersComboboxActionPerformed private void deviceListValueChanged(javax.swing.event.ListSelectionEvent evt) {//GEN-FIRST:event_deviceListValueChanged updateDetailScanner((Scanner)deviceList.getSelectedValue()); }//GEN-LAST:event_deviceListValueChanged void load() { // TODO read settings and initialize GUI // Example: // someCheckBox.setSelected(Preferences.userNodeForPackage(GeneralScannerOptionsPanel.class).getBoolean("someFlag", false)); // or for org.openide.util with API spec. version >= 7.4: // someCheckBox.setSelected(NbPreferences.forModule(GeneralScannerOptionsPanel.class).getBoolean("someFlag", false)); // or: // someTextField.setText(SomeSystemOption.getDefault().getSomeStringProperty()); DefaultComboBoxModel model = managerListModel; model.removeAllElements(); Collection<ScannerManager> managers = ScannerFactory.getManagerList(); for (ScannerManager manager : managers) { model.addElement(manager); } } void store() { // TODO store modified settings // Example: // Preferences.userNodeForPackage(GeneralScannerOptionsPanel.class).putBoolean("someFlag", someCheckBox.isSelected()); // or for org.openide.util with API spec. version >= 7.4: // NbPreferences.forModule(GeneralScannerOptionsPanel.class).putBoolean("someFlag", someCheckBox.isSelected()); // or: // SomeSystemOption.getDefault().setSomeStringProperty(someTextField.getText()); } boolean valid() { // TODO check whether form is consistent and complete return true; } // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JButton addPresetBtn; private javax.swing.JComboBox bitDepthCombo; private javax.swing.JList deviceList; private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel2; private javax.swing.JLabel jLabel3; private javax.swing.JLabel jLabel4; private javax.swing.JLabel jLabel5; private javax.swing.JLabel jLabel6; private javax.swing.JLabel jLabel7; private javax.swing.JPanel jPanel1; private javax.swing.JScrollPane jScrollPane1; private javax.swing.JScrollPane jScrollPane3; private javax.swing.JToolBar jToolBar1; private javax.swing.JComboBox managersCombobox; private javax.swing.JComboBox modeCombo; private javax.swing.JList presetList; private javax.swing.JTextField presetNameEdit; private javax.swing.JButton removePresetBtn; private javax.swing.JComboBox resolutionCombobox; private javax.swing.JButton savePresetBtn; // End of variables declaration//GEN-END:variables private static RequestProcessor rp = new RequestProcessor(GeneralScannerOptionsPanel.class.getName(), 1); private void updateListScanners(final ScannerManager scannerDevice) { scannerListModel.removeAllElements(); scannerListModel.addElement("Searching devices..."); rp.post(new Runnable() { @Override public void run() { if (scannerDevice != null) { final Collection<Scanner> listDevices = scannerDevice.getListDevices(); scannerListModel.removeAllElements(); for (Scanner device : listDevices) { scannerListModel.addElement(device); } } } }); } private void updateDetailScanner(Scanner scanner) { resolutionListModel.removeAllElements(); if(scanner==null){ return; } List<Double> supportedResolutions = scanner.getSupportedResolutions(); for (double d : supportedResolutions) { resolutionListModel.addElement(String.valueOf(d)); } bitDepthComboModel.removeAllElements(); List<Integer> supportedBitDepth=scanner.getSupportedBitDepth(); for (int depth : supportedBitDepth) { bitDepthComboModel.addElement(depth+" bits"); } modeComboModel.removeAllElements(); for (String mode : scanner.getSupportedModes()) { modeComboModel.addElement(mode); } } }