@Override public void actionPerformed(ActionEvent e) { Mask mask = getMaskForm().getSelectedMask(); ImageType imageType = mask.getImageType(); ProductSceneView productSceneView = topComponent.getSelectedProductSceneView(); if (productSceneView != null) { Rectangle2D modelBounds; if (imageType == Mask.VectorDataType.INSTANCE) { modelBounds = handleVectorMask(mask); } else { modelBounds = handleImageMask(mask, productSceneView.getBaseImageLayer().getImageToModelTransform()); } if (modelBounds != null) { Viewport viewport = productSceneView.getViewport(); final AffineTransform m2vTransform = viewport.getModelToViewTransform(); final AffineTransform v2mTransform = viewport.getViewToModelTransform(); final Rectangle2D viewBounds = m2vTransform.createTransformedShape(modelBounds).getBounds2D(); viewBounds.setFrameFromDiagonal(viewBounds.getMinX() - 10, viewBounds.getMinY() - 10, viewBounds.getMaxX() + 10, viewBounds.getMaxY() + 10); final Shape transformedModelBounds = v2mTransform.createTransformedShape(viewBounds); viewport.zoom(transformedModelBounds.getBounds2D()); } else { Dialogs.showMessage("Zoom to Mask", "The selected mask is empty.", JOptionPane.INFORMATION_MESSAGE, null); } } }
MaskFormActions(ToolTopComponent maskTopComponent, MaskForm maskForm) { maskActions = new MaskAction[]{ new NewBandMathsAction(maskForm), new NewRangeAction(maskForm), new NewVectorDataNodeAction(maskForm), new NullAction(maskForm), new NewUnionAction(maskForm), new NewIntersectionAction(maskForm), new NewDifferenceAction(maskForm), new NewInvDifferenceAction(maskForm), new NewComplementAction(maskForm), new NullAction(maskForm), new CopyAction(maskForm), new EditAction(maskForm), new RemoveAction(maskForm), new TransferAction(maskForm), new ImportAction(maskTopComponent, maskForm), new ExportAction(maskTopComponent, maskForm), new ZoomToVectorMaskAction(maskTopComponent, maskForm), new NullAction(maskForm), }; }
@Override void updateState() { setEnabled(getMaskForm().getSelectedRowCount() == 1 && topComponent.getSelectedProductSceneView() != null); }