/*
* 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);
}
}
}