@Override public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus); if (value != null) { this.setText(((Mask) value).getName()); } return this; } });
String createCodeFromSelection(String op, Mask[] selectedMasks, int selectionOffset) { StringBuilder code = new StringBuilder(); for (int i = selectionOffset; i < selectedMasks.length; i++) { Mask mask = selectedMasks[i]; if (code.length() > 0) { code.append(" "); code.append(op); code.append(" "); } code.append(BandArithmetic.createExternalName(mask.getName())); } return code.toString(); }
@Override String getCode(ActionEvent e) { Mask[] selectedMasks = getMaskForm().getSelectedMasks(); List<Mask> reverseList = new ArrayList<>(Arrays.asList(selectedMasks)); Collections.reverse(reverseList); selectedMasks = reverseList.toArray(new Mask[selectedMasks.length]); StringBuilder code = new StringBuilder(); code.append(BandArithmetic.createExternalName(selectedMasks[0].getName())); if (selectedMasks.length > 1) { code.append(" && !("); code.append(createCodeFromSelection("||", selectedMasks, 1)); code.append(")"); } return code.toString(); }
@Override String getCode(ActionEvent e) { Mask[] selectedMasks = getMaskForm().getSelectedMasks(); StringBuilder code = new StringBuilder(); code.append(BandArithmetic.createExternalName(selectedMasks[0].getName())); if (selectedMasks.length > 1) { code.append(" && !("); code.append(createCodeFromSelection("||", selectedMasks, 1)); code.append(")"); } return code.toString(); }
private void addMaskToProductIfPossible(Mask mask, Product product) throws Exception { if (mask.getImageType().canTransferMask(mask, product)) { product.getMaskGroup().add(mask); } else { throw new Exception(String.format("Cannot add mask '%s' to selected product.", mask.getName())); } } }
private String getSubPanelTitle(Mask mask) { final String title; if (mask != null) { title = String.format("<html><b>%s</b> with ROI-mask <b>%s</b></html>", getRaster().getName(), mask.getName()); } else { title = String.format("<html><b>%s</b></html>", getRaster().getName()); } return title; }
@Override public void nodeDataChanged(ProductNodeEvent event) { if (!useRoiCheckBox.isSelected()) { return; } final ProductNode sourceNode = event.getSourceNode(); if (!(sourceNode instanceof Mask)) { return; } final String maskName = ((Mask) sourceNode).getName(); final String[] selectedNames = getSelectedMaskNames(); if (StringUtils.contains(selectedNames, maskName)) { updateEnablement(); } }
private static void reprojectBandData(Mask[] selectedMasks, Product sourceProduct, Product targetProduct) { final Map<String, Object> projParameters = Collections.emptyMap(); Map<String, Product> projProducts = new HashMap<>(); projProducts.put("source", sourceProduct); projProducts.put("collocateWith", targetProduct); Product reprojectedProduct = GPF.createProduct("Reproject", projParameters, projProducts); for (Mask mask : selectedMasks) { Band band = createBandCopy(targetProduct, mask); MultiLevelImage image = reprojectedProduct.getMaskGroup().get(mask.getName()).getSourceImage(); band.setSourceImage(image); } }
private static void addMaskNameRefs(Product product, String namePrefix, List<String> list) { for (int j = 0; j < product.getMaskGroup().getNodeCount(); j++) { Mask mask = product.getMaskGroup().get(j); list.add(namePrefix + mask.getName()); } }
@Override public void nodeDataChanged(ProductNodeEvent event) { super.nodeDataChanged(event); if (!dataSourceConfig.useRoiMask) { return; } final Mask roiMask = dataSourceConfig.roiMask; if (roiMask == null) { return; } final ProductNode sourceNode = event.getSourceNode(); if (!(sourceNode instanceof Mask)) { return; } final String maskName = sourceNode.getName(); if (roiMask.getName().equals(maskName)) { updateComponents(); } }
private HistogramPanelModel.HistogramConfig createHistogramConfig() { if (getRaster() == null || isRasterChanged()) { return null; } return new HistogramPanelModel.HistogramConfig(getRaster(), histogramPlotConfig.useRoiMask ? histogramPlotConfig.roiMask.getName() : null, histogramPlotConfig.numBins, histogramPlotConfig.histogramLogScaled); }
@Override public void nodeDataChanged(ProductNodeEvent event) { super.nodeDataChanged(event); if (!histogramPlotConfig.useRoiMask) { return; } final Mask roiMask = histogramPlotConfig.roiMask; if (roiMask == null) { return; } final ProductNode sourceNode = event.getSourceNode(); if (!(sourceNode instanceof Mask)) { return; } final String maskName = sourceNode.getName(); if (roiMask.getName().equals(maskName)) { model.removeStx(createHistogramConfig()); updateComponents(); } }
private static Band createBandCopy(Product targetProduct, Mask mask) { String bandName = ProductUtils.getAvailableNodeName("mask_" + mask.getName(), targetProduct.getBandGroup()); String maskName = ProductUtils.getAvailableNodeName(mask.getName(), targetProduct.getMaskGroup()); int dataType = mask.getDataType(); Band band = targetProduct.addBand(bandName, dataType); String description = mask.getDescription() + " (from " + mask.getProduct().getDisplayName() + ")"; targetProduct.addMask(maskName, bandName, description, mask.getImageColor(), mask.getImageTransparency()); return band; }
void addMask(Mask mask) { getModel().addMask(mask); int rowIndex = getModel().getMaskIndex(mask.getName()); getSelectionModel().addSelectionInterval(rowIndex, rowIndex); scrollRectToVisible(getCellRect(rowIndex, 0, true)); }
private static void copyMaskPixel(Mask[] selectedMasks, Product sourceProduct, Product[] maskPixelTargetProducts) { if (MultiSizeIssue.isMultiSize(sourceProduct)) { final Product resampledProduct = MultiSizeIssue.maybeResample(sourceProduct); if (resampledProduct != null) { sourceProduct = resampledProduct; for (int i = 0; i < selectedMasks.length; i++) { Mask selectedMask = selectedMasks[i]; selectedMasks[i] = sourceProduct.getMaskGroup().get(selectedMask.getName()); } } else { return; } } for (Product targetProduct : maskPixelTargetProducts) { if (sourceProduct.isCompatibleProduct(targetProduct, 1.0e-3f)) { copyBandData(selectedMasks, targetProduct); } else { reprojectBandData(selectedMasks, sourceProduct, targetProduct); } } }
private void refreshGroup() { final ProductNodeGroup<Mask> productMaskGroup = product.getMaskGroup(); if (group != productMaskGroup) { final Product.AutoGrouping autoGrouping = product.getAutoGrouping(); if (autoGrouping != null) { final int groupIndex = autoGrouping.indexOf(group.getDisplayName()); group.removeAll(); for (int i = 0; i < productMaskGroup.getNodeCount(); i++) { final Mask mask = productMaskGroup.get(i); if (autoGrouping.indexOf(mask.getName()) == groupIndex) { group.add(mask); } } } } }
private void resetMaskListState() { maskNameListModel = new DefaultListModel<>(); final String[] currentSelectedMaskNames = getSelectedMaskNames(); if (product != null && raster != null) { //todo [multisize_products] compare scenerastertransform (or its successor) rather than size (tf) final ProductNodeGroup<Mask> maskGroup = product.getMaskGroup(); for (int i = 0; i < maskGroup.getNodeCount(); i++) { final Mask mask = maskGroup.get(i); if (mask.getRasterSize().equals(raster.getRasterSize())) { maskNameListModel.addElement(mask.getName()); } } maskNameList.setModel(maskNameListModel); } final String[] allNames = StringUtils.toStringArray(maskNameListModel.toArray()); indexesInMaskNameList = new int[allNames.length]; for (int i = 0; i < allNames.length; i++) { String name = allNames[i]; if (StringUtils.contains(currentSelectedMaskNames, name)) { maskNameList.getCheckBoxListSelectionModel().addSelectionInterval(i, i); } indexesInMaskNameList[i] = i; } updateEnablement(); }
@Override public Object getValueAt(int rowIndex, int columnIndex) { final ProductNodeGroup<Mask> maskGroup = getMaskGroup(); Mask mask = maskGroup.get(rowIndex); int column = modeIdxs[columnIndex]; if (column == IDX_VISIBILITY) { if (visibleBand.getOverlayMaskGroup().contains(mask)) { return Boolean.TRUE; } else { return Boolean.FALSE; } } else if (column == IDX_NAME) { return mask.getName(); } else if (column == IDX_TYPE) { return mask.getImageType().getName(); } else if (column == IDX_COLOR) { return mask.getImageColor(); } else if (column == IDX_TRANSPARENCY) { return mask.getImageTransparency(); } else if (column == IDX_DESCRIPTION) { return mask.getDescription(); } return null; }
@Override public void actionPerformed(ActionEvent e) { Mask selectedMask = getMaskForm().getSelectedMask(); final Mask mask = createNewMask(selectedMask.getImageType()); mask.setName("Copy_of_" + selectedMask.getName()); mask.setDescription(selectedMask.getDescription()); PropertyContainer selectedConfig = selectedMask.getImageConfig(); Property[] models = selectedConfig.getProperties(); for (Property model : models) { mask.getImageConfig().setValue(model.getDescriptor().getName(), model.getValue()); } getMaskForm().addMask(mask); }
private void copyMasks(Product sourceProduct, Product targetProduct, String...bandNames) { if (isSentinelProduct(sourceProduct)) { final ProductNodeGroup<Mask> sourceMaskGroup = sourceProduct.getMaskGroup(); int nodeCount = sourceMaskGroup.getNodeCount(); for (int i = 0; i < nodeCount; i++) { final Mask mask = sourceMaskGroup.get(i); String maskName = mask.getName(); if (!targetProduct.getMaskGroup().contains(maskName) && StringHelper.endsWithIgnoreCase(maskName, bandNames)) { if (mask.getImageType().transferMask(mask, targetProduct) == null) { Mask targetMask = new Mask(maskName, mask.getRasterWidth(), mask.getRasterHeight(), mask.getImageType()); ProductUtils.copyRasterDataNodeProperties(mask, targetMask); targetMask.setSourceImage(mask.getSourceImage()); targetProduct.getMaskGroup().add(targetMask); } } } } else { final ProductNodeGroup<Mask> sourceMaskGroup = sourceProduct.getMaskGroup(); for (int i = 0; i < sourceMaskGroup.getNodeCount(); i++) { final Mask mask = sourceMaskGroup.get(i); if (!targetProduct.getMaskGroup().contains(mask.getName())) { mask.getImageType().transferMask(mask, targetProduct); } } } }