diff --git a/snap-graph-builder/src/main/java/org/esa/snap/graphbuilder/gpf/ui/BaseOperatorUI.java b/snap-graph-builder/src/main/java/org/esa/snap/graphbuilder/gpf/ui/BaseOperatorUI.java index 54f58cca12..6bcbc7d98f 100644 --- a/snap-graph-builder/src/main/java/org/esa/snap/graphbuilder/gpf/ui/BaseOperatorUI.java +++ b/snap-graph-builder/src/main/java/org/esa/snap/graphbuilder/gpf/ui/BaseOperatorUI.java @@ -196,6 +196,22 @@ protected String[] getBandNames() { return bandNames.toArray(new String[bandNames.size()]); } + protected String[] getTiePointGridNames(){ + final ArrayList tiePointGridNames = new ArrayList<>(3); + if (sourceProducts != null) { + for (Product prod : sourceProducts) { + if (sourceProducts.length > 1) { + for (String name : prod.getTiePointGridNames()) { + tiePointGridNames.add(name + "::" + prod.getName()); + } + } else { + tiePointGridNames.addAll(Arrays.asList(prod.getTiePointGridNames())); + } + } + } + return tiePointGridNames.toArray(new String[tiePointGridNames.size()]); + } + protected String[] getGeometries() { final ArrayList geometryNames = new ArrayList<>(5); if (sourceProducts != null) { diff --git a/snap-graph-builder/src/main/java/org/esa/snap/graphbuilder/gpf/ui/SourceUI.java b/snap-graph-builder/src/main/java/org/esa/snap/graphbuilder/gpf/ui/SourceUI.java index 2d045351a3..1d2286c21b 100644 --- a/snap-graph-builder/src/main/java/org/esa/snap/graphbuilder/gpf/ui/SourceUI.java +++ b/snap-graph-builder/src/main/java/org/esa/snap/graphbuilder/gpf/ui/SourceUI.java @@ -294,10 +294,10 @@ private JComponent createPanel() { contentPanel.add(formatNameComboBox, gbc); gbc = SwingUtils.buildConstraints(0, 2, GridBagConstraints.NONE, GridBagConstraints.WEST, 1, 1, gapBetweenRows, 0); contentPanel.add(advancedOptionsBtn, gbc); - gbc = SwingUtils.buildConstraints(0, 3, GridBagConstraints.BOTH, GridBagConstraints.WEST, 2, 1, 0, 0); + gbc = SwingUtils.buildConstraints(0, 4, GridBagConstraints.BOTH, GridBagConstraints.WEST, 2, 1, 0, 0); advancedOptionsPanel.setVisible(false); contentPanel.add(advancedOptionsPanel, gbc); - gbc = SwingUtils.buildConstraints(0, 4, GridBagConstraints.BOTH, GridBagConstraints.WEST, 2, 1, 0, 0); + gbc = SwingUtils.buildConstraints(0, 3, GridBagConstraints.BOTH, GridBagConstraints.WEST, 2, 1, 0, 0); contentPanel.add(new JPanel(), gbc); gbc = SwingUtils.buildConstraints(0, 0, GridBagConstraints.NONE, GridBagConstraints.CENTER, 1, 1, gapBetweenRows, 0); diff --git a/snap-graph-builder/src/main/java/org/esa/snap/graphbuilder/gpf/ui/SubsetUI.java b/snap-graph-builder/src/main/java/org/esa/snap/graphbuilder/gpf/ui/SubsetUI.java index 5330c58bc6..d7c83d3acd 100644 --- a/snap-graph-builder/src/main/java/org/esa/snap/graphbuilder/gpf/ui/SubsetUI.java +++ b/snap-graph-builder/src/main/java/org/esa/snap/graphbuilder/gpf/ui/SubsetUI.java @@ -48,6 +48,7 @@ public class SubsetUI extends BaseOperatorUI { private final JList bandList = new JList(); + private final JList tiePointGridList = new JList(); private final JComboBox referenceCombo = new JComboBox(); private final JTextField regionX = new JTextField(""); @@ -161,7 +162,8 @@ public void stateChanged(ChangeEvent e) { @Override public void initParameters() { - OperatorUIUtils.initParamList(bandList, getBandNames(), (Object[])paramMap.get("sourceBands")); + OperatorUIUtils.initParamList(bandList, getBandNames(), (Object[])paramMap.get("bandNames")); + OperatorUIUtils.initParamList(tiePointGridList, getTiePointGridNames(), (Object[])paramMap.get("tiePointGridNames")); String _oldSelected = (String) referenceCombo.getSelectedItem(); referenceCombo.removeAllItems(); @@ -172,6 +174,12 @@ public void initParameters() { referenceCombo.setSelectedItem(string); } } + //enable or disable referenceCombo depending on sourceProduct + if(sourceProducts == null || sourceProducts.length == 0 || !sourceProducts[0].isMultiSize()) { + referenceCombo.setEnabled(false); + } else { + referenceCombo.setEnabled(true); + } final Rectangle region = (Rectangle)paramMap.get("region"); if(region != null) { @@ -239,6 +247,8 @@ public void updateParameters() { } } } + OperatorUIUtils.updateParamList(tiePointGridList, paramMap, "tiePointGridNames"); + int x=0, y=0, rasterReferenceWidth=1, rasterReferenceHeight=1,w=1,h=1; if(sourceProducts!=null && referenceCombo.getSelectedItem()!=null) { if(sourceProducts[0].isMultiSize()) { @@ -263,6 +273,7 @@ public void updateParameters() { subSamplingY.setValue(subSamplingYVal); } final String subSamplingXStr = subSamplingX.getValue().toString(); + if (subSamplingXStr != null && !subSamplingXStr.isEmpty()) paramMap.put("subSamplingX", Integer.parseInt(subSamplingXStr)); final String subSamplingYStr = subSamplingY.getValue().toString(); @@ -468,6 +479,12 @@ private JComponent createPanel() { gbc.fill = GridBagConstraints.BOTH; gbc.gridx = 1; contentPane.add(new JScrollPane(bandList), gbc); + gbc.gridx = 0; + gbc.gridy++; + contentPane.add(new JLabel("Tie-Point Grids:"), gbc); + gbc.fill = GridBagConstraints.BOTH; + gbc.gridx = 1; + contentPane.add(new JScrollPane(tiePointGridList), gbc); gbc.fill = GridBagConstraints.HORIZONTAL; gbc.gridx = 0;