private static boolean hasClassProperty(PlacemarkDescriptor placemarkDescriptor) { return placemarkDescriptor.getBaseFeatureType().getUserData().containsKey(PROPERTY_NAME_PLACEMARK_DESCRIPTOR); }
private ProductNodeGroup<Placemark> getPlacemarkGroup() { return placemarkDescriptor.getPlacemarkGroup(product); } }
@Override public int compare(PlacemarkDescriptor o1, PlacemarkDescriptor o2) { boolean isO1Intended = o1.getCompatibilityFor(featureType) == DecodeQualification.INTENDED; boolean isO2Intended = o2.getCompatibilityFor(featureType) == DecodeQualification.INTENDED; if (isO1Intended && !isO2Intended) { return -1; } else if (!isO1Intended && isO2Intended) { return 1; } else if (isO1Intended && isO2Intended) { if (hasClassProperty(o1) && !hasClassProperty(o2)) { return -1; } else if (!hasClassProperty(o1) && hasClassProperty(o2)) { return 1; } } return 0; } });
private static Cursor createCursor(PlacemarkDescriptor placemarkDescriptor) { final Image cursorImage = placemarkDescriptor.getCursorImage(); if (cursorImage == null) { return Cursor.getPredefinedCursor(Cursor.CROSSHAIR_CURSOR); } return Toolkit.getDefaultToolkit().createCustomCursor(cursorImage, placemarkDescriptor.getCursorHotSpot(), placemarkDescriptor.getRoleName()); }
@Test public void testDeprecatedProperties() throws Exception { final Product product = new Product("n", "t", 1, 1); assertNull(instance.getPlacemarkGroup(product)); assertEquals("track_point", instance.getRoleName()); assertEquals("track point", instance.getRoleLabel()); assertNull(instance.getCursorImage()); assertNotNull(instance.getCursorHotSpot()); assertEquals(null, instance.getShowLayerCommandId()); }
final SimpleFeatureType placemarkFT = placemarkDescriptor.getBaseFeatureType(); SimpleFeatureBuilder fb = new SimpleFeatureBuilder(placemarkFT); AttributeType at = new AttributeTypeImpl(new NameImpl("label"), String.class, f.getUserData().put("originalAttributes", attributeValues); f.setAttribute(Placemark.PROPERTY_NAME_DATETIME, coordinate.getDateTime()); final Placemark placemark = placemarkDescriptor.createPlacemark(f); placemark.setGeoPos(new GeoPos(coordinate.getLat(), coordinate.getLon())); placemark.setName(coordinate.getName());
@Test public void testSetUserData() throws Exception { SimpleFeatureType ft1 = createCompatibleFT("org.esa.beam.Pineapple"); assertEquals(0, ft1.getUserData().size()); instance.setUserDataOf(ft1); assertEquals(3, ft1.getUserData().size()); assertEquals("geometry", ft1.getUserData().get("defaultGeometry")); assertEquals("true", ft1.getUserData().get("trackPoints")); assertEquals(TrackPointDescriptor.class.getName(), ft1.getUserData().get("placemarkDescriptor")); SimpleFeatureType ft2 = createCompatibleFT("org.esa.beam.Pin"); assertEquals(0, ft2.getUserData().size()); instance.setUserDataOf(ft2); assertEquals(3, ft2.getUserData().size()); assertEquals("geometry", ft2.getUserData().get("defaultGeometry")); assertEquals("true", ft2.getUserData().get("trackPoints")); assertEquals(TrackPointDescriptor.class.getName(), ft2.getUserData().get("placemarkDescriptor")); }
@Test public void testGetQualification() throws Exception { SimpleFeatureType ft = instance.getBaseFeatureType(); assertEquals(DecodeQualification.INTENDED, instance.getCompatibilityFor(ft)); // todo - this is not sufficient: in order to return INTENDED, the given featureType must be equal-to or derived-from DEFAULT_FEATURE_TYPE (nf - 2012-04-23) assertEquals(DecodeQualification.INTENDED, instance.getCompatibilityFor(createCompatibleFT("org.esa.beam.Pin"))); SimpleFeatureTypeBuilder ftb = new SimpleFeatureTypeBuilder(); ftb.setName("org.esa.beam.Pineapple"); assertEquals(DecodeQualification.UNABLE, instance.getCompatibilityFor(ftb.buildFeatureType())); }
private void testSetUserDataOf(PlacemarkDescriptor descriptor, String expected) { final SimpleFeatureType ft = descriptor.getBaseFeatureType(); descriptor.setUserDataOf(ft); assertTrue(ft.getUserData().containsKey(AbstractPlacemarkDescriptor.PROPERTY_NAME_PLACEMARK_DESCRIPTOR)); assertEquals(expected, ft.getUserData().get(AbstractPlacemarkDescriptor.PROPERTY_NAME_PLACEMARK_DESCRIPTOR)); } }
@Override public int compare(PlacemarkDescriptor o1, PlacemarkDescriptor o2) { return o1.getRoleLabel().compareTo(o2.getRoleLabel()); } });
final SimpleFeature feature = PlainFeatureFactory.createPlainFeature(descriptor.getBaseFeatureType(), name, geometry, descriptor.updateGeoPos(geoCoding, imagePos, geoPos);
boolean belongsToProduct = placemark.getProduct() != null; String titlePrefix = belongsToProduct ? "Edit" : "New"; String roleLabel = StringUtils.firstLetterUp(placemarkDescriptor.getRoleLabel()); if (!belongsToProduct) { placemarkDescriptor.getPlacemarkGroup(product).add(placemark);
placemarkDescriptor.updatePixelPos(geoCoding, placemark.getGeoPos(), pixelPos); showWarningDialog(MessageFormat.format( "One or more {0}s have not been imported,\n{1}because they can not be assigned to a product without a geo-coding.", placemarkDescriptor.getRoleLabel(), intoProductMessage)); placemarkDescriptor.getRoleLabel(), intoProductMessage)); MessageFormat.format( "No {0}s have been imported,\n{1}because their pixel positions\nare outside the product''s bounds.", placemarkDescriptor.getRoleLabel(), intoProductMessage) ); } else { MessageFormat.format( "{0} {1}s have not been imported,\n{2}because their pixel positions\nare outside the product''s bounds.", numPinsOutOfBounds, placemarkDescriptor.getRoleLabel(), intoProductMessage) );
private void generatePlacemarkForFeature(SimpleFeature feature) { final Placemark placemark = getPlacemarkGroup().getPlacemark(feature); if (placemark == null) { placemarkGroup.add(placemarkDescriptor.createPlacemark(feature)); } }
void exportPlacemarks() { final BeamFileChooser fileChooser = new BeamFileChooser(); fileChooser.setDialogTitle(MessageFormat.format("Export {0}(s)", StringUtils.firstLetterUp(placemarkDescriptor.getRoleLabel()))); /*I18N*/ setComponentName(fileChooser, "Export_Selected"); fileChooser.addChoosableFileFilter(PlacemarkIO.createTextFileFilter()); final File ioDir = getIODir(); fileChooser.setCurrentDirectory(ioDir); fileChooser.setSelectedFile(new File(ioDir, placemarkDescriptor.getRoleName())); int result = fileChooser.showSaveDialog(getPaneWindow()); if (result == JFileChooser.APPROVE_OPTION) { showErrorDialog( String.format("I/O Error.\n Failed to export %ss.\n%s", placemarkDescriptor.getRoleLabel(), ioe.getMessage()) ); ioe.printStackTrace();
protected CommandBar createLayersToolBar() { final CommandBar toolBar = createToolBar(LAYERS_TOOL_BAR_ID, "Layers"); ArrayList<String> commandIdList = new ArrayList<>(Arrays.asList( "showNoDataOverlay", "showShapeOverlay", "showGraticuleOverlay", "showWorldMapOverlay")); Set<PlacemarkDescriptor> placemarkDescriptors = PlacemarkDescriptorRegistry.getInstance().getPlacemarkDescriptors(); for (PlacemarkDescriptor placemarkDescriptor : placemarkDescriptors) { if (placemarkDescriptor.getShowLayerCommandId() != null) { commandIdList.add(placemarkDescriptor.getShowLayerCommandId()); } } addCommandsToToolBar(toolBar, commandIdList.toArray(new String[commandIdList.size()])); return toolBar; }
public static String createName(PlacemarkDescriptor placemarkDescriptor, int pinNumber) { return placemarkDescriptor.getRoleName() + "_" + pinNumber; }
@Test public void testDeprecatedProperties() throws Exception { final Product product = new Product("n", "t", 1, 1); assertSame(product.getGcpGroup(), instance.getPlacemarkGroup(product)); assertEquals("gcp", instance.getRoleName()); assertEquals("GCP", instance.getRoleLabel()); assertNull(instance.getCursorImage()); assertNotNull(instance.getCursorHotSpot()); assertEquals("showGcpOverlay", instance.getShowLayerCommandId()); }
@Test public void testCreatePlacemark() throws Exception { final SimpleFeatureType ft = instance.getBaseFeatureType(); SimpleFeatureBuilder fb = new SimpleFeatureBuilder(ft); final SimpleFeature f = fb.buildFeature("id1", new Object[ft.getAttributeCount()]); final Placemark placemark = instance.createPlacemark(f); assertNotNull(placemark); assertSame(f, placemark.getFeature()); assertSame(instance, placemark.getDescriptor()); }
return null; placemarkDescriptor.setUserDataOf(featureType);