private boolean checkFlagDatasetIncluded() { final String[] nodeNames = productSubsetDef.getNodeNames(); final List<String> flagDsNameList = new ArrayList<String>(10); boolean flagDsInSubset = false; for (int i = 0; i < product.getNumBands(); i++) { Band band = product.getBandAt(i); if (band.getFlagCoding() != null) { flagDsNameList.add(band.getName()); if (StringUtils.contains(nodeNames, band.getName())) { flagDsInSubset = true; } break; } } final int numFlagDs = flagDsNameList.size(); boolean ok = true; if (numFlagDs > 0 && !flagDsInSubset) { int status = JOptionPane.showConfirmDialog( getJDialog(), "No flag dataset selected.\n\n" + "If you do not include a flag dataset in the subset,\n" + "you will not be able to create bitmask overlays.\n\n" + "Do you wish to include the available flag dataset(s)\n" + "in the current subset?\n", "No Flag Dataset Selected", JOptionPane.YES_NO_CANCEL_OPTION); if (status == JOptionPane.YES_OPTION) { productSubsetDef.addNodeNames(flagDsNameList.toArray(new String[numFlagDs])); ok = true; } else if (status == JOptionPane.NO_OPTION) { /* OK, no flag datasets wanted */ ok = true; } else if (status == JOptionPane.CANCEL_OPTION) { ok = false; } } return ok; }
private ProductNodeSubsetPane createAnnotationSubsetPane() { final MetadataElement metadataRoot = product.getMetadataRoot(); final MetadataElement[] metadataElements = metadataRoot.getElements(); final String[] metaNodes; if (metadataElements.length == 0) { return null; } // metadata elements must be added to includeAlways list // to ensure that they are selected if isIgnoreMetada is set to false if (givenProductSubsetDef != null && !givenProductSubsetDef.isIgnoreMetadata()) { metaNodes = new String[metadataElements.length]; for (int i = 0; i < metadataElements.length; i++) { final MetadataElement metadataElement = metadataElements[i]; metaNodes[i] = metadataElement.getName(); } } else { metaNodes = new String[0]; } final String[] includeNodes = StringUtils.addToArray(metaNodes, Product.HISTORY_ROOT_NAME); return new ProductNodeSubsetPane(metadataElements, includeNodes, true); }
private void createUI() { ActionListener productNodeCheckListener = new ActionListener() { @Override public void actionPerformed(ActionEvent e) { updateUIState(); } }; checkers = new ArrayList<JCheckBox>(10); JPanel checkersPane = GridBagUtils.createPanel(); setComponentName(checkersPane, "CheckersPane"); GridBagConstraints gbc = GridBagUtils.createConstraints("insets.left=4,anchor=WEST,fill=HORIZONTAL"); for (int i = 0; i < productNodes.length; i++) { ProductNode productNode = (ProductNode) productNodes[i]; String name = productNode.getName(); JCheckBox productNodeCheck = new JCheckBox(name); productNodeCheck.setSelected(selected); productNodeCheck.setFont(SMALL_PLAIN_FONT); productNodeCheck.addActionListener(productNodeCheckListener); if (includeAlways != null && StringUtils.containsIgnoreCase(includeAlways, name)) { productNodeCheck.setSelected(true); productNodeCheck.setEnabled(false); } else if (givenProductSubsetDef != null) { productNodeCheck.setSelected(givenProductSubsetDef.containsNodeName(name)); } checkers.add(productNodeCheck); String description = productNode.getDescription(); JLabel productNodeLabel = new JLabel(description != null ? description : " "); productNodeLabel.setFont(SMALL_ITALIC_FONT); GridBagUtils.addToPanel( checkersPane, productNodeCheck, gbc, "weightx=0,gridx=0,gridy=" + i); GridBagUtils.addToPanel( checkersPane, productNodeLabel, gbc, "weightx=1,gridx=1,gridy=" + i); } // Add a last 'filler' row GridBagUtils.addToPanel( checkersPane, new JLabel(" "), gbc, "gridwidth=2,weightx=1,weighty=1,gridx=0,gridy=" + productNodes.length); ActionListener allCheckListener = new ActionListener() { @Override public void actionPerformed(ActionEvent e) { if (e.getSource() == allCheck) { checkAllProductNodes(true); } else if (e.getSource() == noneCheck) { checkAllProductNodes(false); } updateUIState(); } }; allCheck = new JCheckBox("Select all"); allCheck.setName("selectAll"); allCheck.setMnemonic('a'); allCheck.addActionListener(allCheckListener); noneCheck = new JCheckBox("Select none"); noneCheck.setName("SelectNone"); noneCheck.setMnemonic('n'); noneCheck.addActionListener(allCheckListener); JScrollPane scrollPane = new JScrollPane(checkersPane); scrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED); scrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED); JPanel buttonRow = new JPanel(new FlowLayout(FlowLayout.LEFT, 4, 4)); buttonRow.add(allCheck); buttonRow.add(noneCheck); setLayout(new BorderLayout()); add(scrollPane, BorderLayout.CENTER); add(buttonRow, BorderLayout.SOUTH); setBorder(BorderFactory.createEmptyBorder(7, 7, 7, 7)); updateUIState(); }