@Override protected JComponent createCrsComponent() { collocateProductSelector = new SourceProductSelector(getAppContext(), "Product:"); collocateProductSelector.setProductFilter(new CollocateProductFilter()); collocateProductSelector.addSelectionChangeListener(new AbstractSelectionChangeListener() { @Override public void selectionChanged(SelectionChangeEvent event) { fireCrsChanged(); } }); final JPanel panel = new JPanel(new BorderLayout(2, 2)); panel.add(collocateProductSelector.getProductNameComboBox(), BorderLayout.CENTER); panel.add(collocateProductSelector.getProductFileChooserButton(), BorderLayout.EAST); panel.addPropertyChangeListener("enabled", new PropertyChangeListener() { @Override public void propertyChange(PropertyChangeEvent evt) { collocateProductSelector.getProductNameComboBox().setEnabled(panel.isEnabled()); collocateProductSelector.getProductFileChooserButton().setEnabled(panel.isEnabled()); final boolean collocate = getRadioButton().isSelected(); getCrsUI().firePropertyChange("collocate", !collocate, collocate); } }); return panel; }
Product getSourceProduct() { return sourceProductSelector.getSelectedProduct(); }
public void initSourceProductSelectors() { for (SourceProductSelector sourceProductSelector : sourceProductSelectorList) { sourceProductSelector.initProducts(); } }
public void prepareShow() { masterProductSelector.initProducts(); if (masterProductSelector.getProductCount() > 0) { masterProductSelector.setSelectedIndex(0); } slaveProductSelector.initProducts(); if (slaveProductSelector.getProductCount() > 1) { slaveProductSelector.setSelectedIndex(1); } }
private JPanel createSourceProductPanel() { final JPanel panel = sourceProductSelector.createDefaultPanel(); sourceProductSelector.getProductNameLabel().setText("Name:"); sourceProductSelector.getProductNameComboBox().setPrototypeDisplayValue( "MER_RR__1PPBCM20030730_071000_000003972018_00321_07389_0000.N1"); sourceProductSelector.addSelectionChangeListener(new AbstractSelectionChangeListener() { @Override public void selectionChanged(SelectionChangeEvent event) { final Product sourceProduct = getSourceProduct(); updateTargetProductName(sourceProduct); GeoPos centerGeoPos = null; if (sourceProduct != null) { centerGeoPos = ProductUtils.getCenterGeoPos(sourceProduct); } infoForm.setCenterPos(centerGeoPos); if (outputGeometryModel != null) { outputGeometryModel.setSourceProduct(sourceProduct); } updateCRS(); } }); return panel; }
@Test public void testNewProductIsDisposed() throws Exception { SourceProductSelector selector = new SourceProductSelector(appContext, "Source"); selector.initProducts(); Product newProduct = new Product("new", "T1", 0, 0); newProduct.setFileLocation(new File("")); selector.setSelectedProduct(newProduct); assertSame(newProduct, selector.getSelectedProduct()); selector.setSelectedProduct(defaultProducts[0]); assertSame(defaultProducts[0], selector.getSelectedProduct()); Assert.assertNotNull(newProduct.getFileLocation()); selector.releaseProducts(); Assert.assertNull(newProduct.getFileLocation()); // assert that new product is disposed, because it is not selected }
@Override public JComponent CreateOpTab(String operatorName, Map<String, Object> parameterMap, AppContext appContext) { paramMap = parameterMap; sourceProductSelector = new SourceProductSelector(appContext); final TableLayout tableLayout = new TableLayout(1); tableLayout.setTableAnchor(TableLayout.Anchor.WEST); tableLayout.setTableWeightX(1.0); tableLayout.setTableFill(TableLayout.Fill.HORIZONTAL); tableLayout.setTablePadding(3, 3); final JPanel sourcePanel = sourceProductSelector.createDefaultPanel(); formatNameComboBox = new JComboBox<>(); formatNameComboBox.setToolTipText("Select 'Any Format' to let SNAP decide"); final JPanel formatPanel = new JPanel(); formatPanel.add(new JLabel("Data Format: ")); formatPanel.add(formatNameComboBox); sourcePanel.add(formatPanel); final JPanel ioParametersPanel = new JPanel(tableLayout); ioParametersPanel.add(sourcePanel); ioParametersPanel.add(tableLayout.createVerticalSpacer()); sourceProductSelector.initProducts(); sourceProductSelector.addSelectionChangeListener(new SourceSelectionChangeListener()); final Product selectedProduct = sourceProductSelector.getSelectedProduct(); if(selectedProduct != null) { updateFormatNamesCombo(selectedProduct.getFileLocation()); } initParameters(); return ioParametersPanel; }
public ReflectanceTargetProductDialog(String operatorName, AppContext appContext, String title, String helpID, boolean targetProductSelectorDisplay) { super(operatorName, appContext, title, helpID, targetProductSelectorDisplay); DefaultIOParametersPanel ioParametersPanel = getDefaultIOParametersPanel(); List<SourceProductSelector> sourceProductSelectorList = ioParametersPanel.getSourceProductSelectorList(); if (!sourceProductSelectorList.isEmpty()) { SelectionChangeListener listener = new SelectionChangeListener() { public void selectionChanged(SelectionChangeEvent event) { processSelectedProduct(); } public void selectionContextChanged(SelectionChangeEvent event) { } }; sourceProductSelectorList.get(0).addSelectionChangeListener(listener); } }
@Test public void testCreatedUIComponentsAreSame() { SourceProductSelector selector = new SourceProductSelector(appContext, "Source:"); selector.initProducts(); assertSame(selector.getProductNameLabel(), selector.getProductNameLabel()); assertSame(selector.getProductNameComboBox(), selector.getProductNameComboBox()); assertSame(selector.getProductFileChooserButton(), selector.getProductFileChooserButton()); }
MosaicIOPanel(AppContext appContext, MosaicFormModel mosaicModel, TargetProductSelector selector) { this.appContext = appContext; this.mosaicModel = mosaicModel; propertySet = mosaicModel.getPropertySet(); final FileArrayEditor.EditorParent context = new FileArrayEditorContext(appContext); sourceFileEditor = new FileArrayEditor(context, "Source products") { @Override protected JFileChooser createFileChooserDialog() { final JFileChooser fileChooser = super.createFileChooserDialog(); fileChooser.setDialogTitle("Mosaic - Open Source Product(s)"); return fileChooser; } }; targetProductSelector = selector; updateProductSelector = new SourceProductSelector(appContext); updateProductSelector.setProductFilter(new UpdateProductFilter()); init(); propertySet.addPropertyChangeListener(MosaicFormModel.PROPERTY_UPDATE_MODE, evt -> { if (Boolean.TRUE.equals(evt.getNewValue())) { propertySet.setValue(MosaicFormModel.PROPERTY_UPDATE_PRODUCT, updateProductSelector.getSelectedProduct()); } else { updateProductSelector.setSelectedProduct(null); } }); propertySet.addPropertyChangeListener(MosaicFormModel.PROPERTY_UPDATE_PRODUCT, new TargetProductSelectorUpdater()); }
@Test public void testSetSelectedIndex() throws Exception { SourceProductSelector selector = new SourceProductSelector(appContext, "Source"); selector.initProducts(); assertSame(defaultProducts[0], selector.getSelectedProduct()); selector.setSelectedIndex(1); assertSame(defaultProducts[1], selector.getSelectedProduct()); selector.setSelectedIndex(2); assertSame(defaultProducts[2], selector.getSelectedProduct()); } }
@Test public void testThatComboboxContains_4_EntriesIfEmptySelectionIsDisabled() { boolean enableEmptySelection = false; SourceProductSelector selector = new SourceProductSelector(appContext, "Source", enableEmptySelection); selector.initProducts(); final JComboBox<Object> comboBox = selector.getProductNameComboBox(); assertEquals(4, comboBox.getItemCount()); assertEquals(comboBox.getItemAt(0), defaultProducts[0]); assertEquals(comboBox.getItemAt(1), defaultProducts[1]); assertEquals(comboBox.getItemAt(2), defaultProducts[2]); assertEquals(comboBox.getItemAt(3), defaultProducts[3]); assertEquals(4, selector.getProductCount()); }
private JPanel createSourceProductPanel() { final JPanel masterPanel = new JPanel(new BorderLayout(3, 3)); masterPanel.add(masterProductSelector.getProductNameLabel(), BorderLayout.NORTH); masterProductSelector.getProductNameComboBox().setPrototypeDisplayValue( "MER_RR__1PPBCM20030730_071000_000003972018_00321_07389_0000.N1"); masterPanel.add(masterProductSelector.getProductNameComboBox(), BorderLayout.CENTER); masterPanel.add(masterProductSelector.getProductFileChooserButton(), BorderLayout.EAST); final JPanel slavePanel = new JPanel(new BorderLayout(3, 3)); slavePanel.add(slaveProductSelector.getProductNameLabel(), BorderLayout.NORTH); slavePanel.add(slaveProductSelector.getProductNameComboBox(), BorderLayout.CENTER); slavePanel.add(slaveProductSelector.getProductFileChooserButton(), BorderLayout.EAST); final TableLayout layout = new TableLayout(1); layout.setTableAnchor(TableLayout.Anchor.WEST); layout.setTableFill(TableLayout.Fill.HORIZONTAL); layout.setTableWeightX(1.0); layout.setCellPadding(0, 0, new Insets(3, 3, 3, 3)); layout.setCellPadding(1, 0, new Insets(3, 3, 3, 3)); final JPanel panel = new JPanel(layout); panel.setBorder(BorderFactory.createTitledBorder("Source Products")); panel.add(masterPanel); panel.add(slavePanel); return panel; }
public CollocationForm(PropertySet propertySet, TargetProductSelector targetProductSelector, AppContext appContext) { this.targetProductSelector = targetProductSelector; masterProductSelector = new SourceProductSelector(appContext, "Master (pixel values are conserved):"); slaveProductSelector = new SourceProductSelector(appContext, "Slave (pixel values are resampled onto the master grid):"); renameMasterComponentsCheckBox = new JCheckBox("Rename master components:"); renameSlaveComponentsCheckBox = new JCheckBox("Rename slave components:"); masterComponentPatternField = new JTextField(); slaveComponentPatternField = new JTextField(); resamplingComboBoxModel = new DefaultComboBoxModel<>(ResamplingType.values()); resamplingComboBox = new JComboBox<>(resamplingComboBoxModel); slaveProductSelector.getProductNameComboBox().addActionListener(e -> { Product slaveProduct = slaveProductSelector.getSelectedProduct(); boolean validPixelExpressionUsed = isValidPixelExpressionUsed(slaveProduct); adaptResamplingComboBoxModel(resamplingComboBoxModel, validPixelExpressionUsed); }); createComponents(); bindComponents(propertySet); }
sourceProductSelectorList.add(new SourceProductSelector(theAppContext)); ioParametersPanel.add(selector.createDefaultPanel()); sourceProductSelectorList.get(0).addSelectionChangeListener(new AbstractSelectionChangeListener() { public void selectionChanged(SelectionChangeEvent event) { final Product selectedProduct = (Product) event.getSelection().getSelectedValue();
@Test public void testSelectedProductIsRemoved() { SourceProductSelector selector = new SourceProductSelector(appContext, "Source"); selector.initProducts(); appContext.getProductManager().removeProduct(defaultProducts[0]); Assert.assertEquals(defaultProducts.length - 1, selector.getProductCount()); }
public void releaseProducts() { if (!useSourceSelector) { for (SourceProductSelector sourceProductSelector : sourceProductSelectorList) { sourceProductSelector.releaseProducts(); } } }
bindingContext.getPropertySet().getProperty(TARGET_RESOLUTION_PROPERTY_NAME).getDescriptor().setValueRange(valueRange); productChangedHandler = new ProductChangedHandler(); sourceProductSelectorList.get(0).setSelectedProduct(product); sourceProductSelectorList.get(0).addSelectionChangeListener(productChangedHandler);
private void createSourceProductSelectors(OperatorDescriptor operatorDescriptor) { for (SourceProductDescriptor descriptor : operatorDescriptor.getSourceProductDescriptors()) { final ProductFilter productFilter = new AnnotatedSourceProductFilter(descriptor); SourceProductSelector sourceProductSelector = new SourceProductSelector(appContext, descriptor.isOptional()); sourceProductSelector.setProductFilter(productFilter); sourceProductSelectorList.add(sourceProductSelector); sourceProductSelectorMap.put(descriptor, sourceProductSelector); } }
@Override public void propertyChange(PropertyChangeEvent evt) { collocateProductSelector.getProductNameComboBox().setEnabled(panel.isEnabled()); collocateProductSelector.getProductFileChooserButton().setEnabled(panel.isEnabled()); final boolean collocate = getRadioButton().isSelected(); getCrsUI().firePropertyChange("collocate", !collocate, collocate); } });