@Override public void eraseTargetFeedback(final Request request) { final LayerManager manager = (LayerManager) getHost().getRoot(); final IFigure layer = manager.getLayer(LayerConstants.PRIMARY_LAYER); getFeedbackLayer().setBounds(layer.getBounds()); final List list = getFeedbackLayer().getChildren(); for (final Iterator iter = list.iterator(); iter.hasNext();) { final Object obj = iter.next(); if (obj instanceof Label) { iter.remove(); } } getFeedbackLayer().repaint(); super.eraseTargetFeedback(request); }
@Override public void eraseTargetFeedback(Request request) { LayerManager manager = (LayerManager) this.getHost().getRoot(); IFigure layer = manager.getLayer(LayerConstants.PRIMARY_LAYER); this.getFeedbackLayer().setBounds(layer.getBounds()); List list = this.getFeedbackLayer().getChildren(); for (Iterator iter = list.iterator(); iter.hasNext();) { Object obj = iter.next(); if (obj instanceof Label) { iter.remove(); } } this.getFeedbackLayer().repaint(); super.eraseTargetFeedback(request); }
public boolean containsPoint(int x, int y) { if (!getBounds().contains(x, y)) return false; Rectangle r = getBounds().getCopy(); IFigure ofig = getOwner().getFigure(); Rectangle rown = ofig.getBounds().getCopy(); ofig.translateToAbsolute(rown); IFigure feedback = LayerManager.Helper.find(getOwner()).getLayer(LayerConstants.FEEDBACK_LAYER); feedback.translateToRelative(rown); int offset = getOffset(); if (row && (x >= rown.x && x <= rown.x + rown.width && (y <= offset || y >= r.y + r.height - offset))) return true; if (col && (y >= rown.y && y <= rown.y + rown.height && (x <= offset || x >= r.x + r.width - offset))) return true; return false; }
@Override public void eraseTargetFeedback(Request request) { final LayerManager manager = (LayerManager) getHost().getRoot(); final IFigure layer = manager.getLayer(LayerConstants.PRIMARY_LAYER); getFeedbackLayer().setBounds(layer.getBounds()); final List<?> list = getFeedbackLayer().getChildren(); for (final Iterator<?> iter = list.iterator(); iter.hasNext();) { final Object obj = iter.next(); if (obj instanceof Label) { iter.remove(); } } getFeedbackLayer().repaint(); super.eraseTargetFeedback(request); }
/** * @see GraphicalViewer#findHandleAt(org.eclipse.draw2d.geometry.Point) */ public Handle findHandleAt(Point p) { LayerManager layermanager = (LayerManager) getEditPartRegistry().get( LayerManager.ID); if (layermanager == null) return null; List list = new ArrayList(3); list.add(layermanager.getLayer(LayerConstants.PRIMARY_LAYER)); list.add(layermanager.getLayer(LayerConstants.CONNECTION_LAYER)); list.add(layermanager.getLayer(LayerConstants.FEEDBACK_LAYER)); IFigure handle = getLightweightSystem().getRootFigure() .findFigureAtExcluding(p.x, p.y, list); if (handle instanceof Handle) return (Handle) handle; return null; }
/** * Returns a list of all the edit parts in the * {@link AbstractTool#getOperationSet() operation set}, plus the * {@link org.eclipse.draw2d.ConnectionLayer}. * * @see org.eclipse.gef.tools.TargetingTool#getExclusionSet() */ protected Collection getExclusionSet() { if (exclusionSet == null) { List set = getOperationSet(); exclusionSet = new ArrayList(set.size() + 1); for (int i = 0; i < set.size(); i++) { GraphicalEditPart editpart = (GraphicalEditPart) set.get(i); exclusionSet.add(editpart.getFigure()); } LayerManager layerManager = (LayerManager) getCurrentViewer() .getEditPartRegistry().get(LayerManager.ID); if (layerManager != null) { exclusionSet.add(layerManager .getLayer(LayerConstants.CONNECTION_LAYER)); } } return exclusionSet; }
/** * @see GraphicalViewer#findHandleAt(org.eclipse.draw2d.geometry.Point) */ public Handle findHandleAt( Point p ) { LayerManager layermanager = (LayerManager) getEditPartRegistry( ).get( LayerManager.ID ); if ( layermanager == null ) return null; List list = new ArrayList( 3 ); // list.add(layermanager.getLayer(LayerConstants.PRIMARY_LAYER)); list.add( layermanager.getLayer( LayerConstants.CONNECTION_LAYER ) ); list.add( layermanager.getLayer( LayerConstants.FEEDBACK_LAYER ) ); IFigure handle = getLightweightSystem( ).getRootFigure( ) .findFigureAtExcluding( p.x, p.y, list ); if ( handle instanceof Handle ) return (Handle) handle; return null; }
/** * Outputs a D-Case diagram to a PDF file. * * @param pdfFileName a PDF file name. * @param monitor the progress monitor to use to display progress and receive requests for cancellation. */ @SuppressWarnings("unchecked") private void outputImageFile(String pdfFileName, IProgressMonitor monitor) { try { List<?> editparts = getSelectedObjects(); CopyToImageUtil copyToImageUtil = new CopyToImageUtil(); if (editparts.size() == 1 && editparts.get(0) instanceof DiagramEditPart) { copyToImageUtil.copyToImage((DiagramEditPart) editparts.get(0), new Path(pdfFileName), ImageFileFormat.PDF, monitor); } else { DiagramImageUtils.zOrderSort( (List<GraphicalEditPart>) editparts, LayerManager.Helper.find(getDiagramEditPart()) .getLayer(LayerConstants.PRINTABLE_LAYERS)); copyToImageUtil.copyToImage(getDiagramEditPart(), editparts, new Path(pdfFileName), ImageFileFormat.PDF, monitor); } } catch (CoreException e) { throw new DcaseSystemException(Messages.CopyToEpsRunnable_1, e, MessageTypeImpl.COPY_TO_EPS_FAILED); } }
private static void saveEditorContentsAsImage(IEditorPart editorPart, GraphicalViewer viewer, String saveFilePath, int format) { ScalableFreeformRootEditPart rootEditPart = (ScalableFreeformRootEditPart) viewer.getEditPartRegistry().get(LayerManager.ID); IFigure rootFigure = ((LayerManager) rootEditPart).getLayer(LayerConstants.PRINTABLE_LAYERS);// rootEditPart.getFigure(); Rectangle rootFigureBounds = rootFigure.getBounds(); Control figureCanvas = viewer.getControl(); GC figureCanvasGC = new GC(figureCanvas); Image img = new Image(null, rootFigureBounds.width, rootFigureBounds.height); GC imageGC = new GC(img); imageGC.setBackground(figureCanvasGC.getBackground()); imageGC.setForeground(figureCanvasGC.getForeground()); imageGC.setFont(figureCanvasGC.getFont()); imageGC.setLineStyle(figureCanvasGC.getLineStyle()); imageGC.setLineWidth(figureCanvasGC.getLineWidth()); imageGC.setXORMode(figureCanvasGC.getXORMode()); Graphics imgGraphics = new SWTGraphics(imageGC); rootFigure.paint(imgGraphics); ImageData[] imgData = new ImageData[1]; imgData[0] = img.getImageData(); ImageLoader imgLoader = new ImageLoader(); imgLoader.data = imgData; imgLoader.save(saveFilePath, format); figureCanvasGC.dispose(); imageGC.dispose(); img.dispose(); }
/** * @see org.eclipse.gef.tools.DirectEditManager#eraseFeedback() */ @Override protected void eraseFeedback() { // if (getEditPart().getParent() != null) { // LayerManager.Helper.find(getEditPart()).getLayer(LayerConstants.FEEDBACK_LAYER).getChildren().clear(); // } if( null != getEditPart() && null != getEditPart().getParent() ) { List<Object> feedbackList = LayerManager.Helper.find(getEditPart()).getLayer(LayerConstants.FEEDBACK_LAYER).getChildren(); if(null != feedbackList && !feedbackList.isEmpty()){ super.eraseFeedback(); } } IWorkbench workbench; IWorkbenchWindow workbenchWindow = null; IWorkbenchPage workbenchPage = null; IEditorPart editorPart = null; workbench = PlatformUI.getWorkbench(); if(null != workbench){ workbenchWindow = workbench.getActiveWorkbenchWindow(); } if(null != workbenchWindow){ workbenchPage = workbenchWindow.getActivePage(); } if(null != workbenchPage){ editorPart = workbenchPage.getActiveEditor(); } if(null != editorPart){ if(editorPart instanceof AbstractDiagramEditor){ Diagram diagram = ((AbstractDiagramEditor)editorPart).getDiagram(); if(DiagramType.SEQUENCE_DIAGRAM.equals( diagram.getType() ) ){ List<Object> removeChildren = LayerManager.Helper.find(getEditPart()).getLayer(LayerConstants.FEEDBACK_LAYER).getChildren(); if(null != removeChildren && !removeChildren.isEmpty()){ super.eraseFeedback(); } } } } }
/** * @see org.eclipse.gef.tools.DirectEditManager#eraseFeedback() */ @Override protected void eraseFeedback() { // super.eraseFeedback(); List<Object> feedbackList = LayerManager.Helper.find(getEditPart()).getLayer(LayerConstants.FEEDBACK_LAYER).getChildren(); if(null != feedbackList && !feedbackList.isEmpty()){ super.eraseFeedback(); } }
/** * Asks the source edit part to erase source feedback. */ protected void eraseFeedback() { if (showingFeedback) { LayerManager.Helper.find(getEditPart()) .getLayer(LayerConstants.FEEDBACK_LAYER) .remove(getCellEditorFrame()); cellEditorFrame = null; getEditPart().eraseSourceFeedback(getDirectEditRequest()); showingFeedback = false; } }
private void createDiagramPage() { try { diagramEditor = new ActivitiDiagramEditor(); int index = addPage(diagramEditor, getEditorInput()); setPageText(index, ActivitiMultiPageEditor.DIAGRAM_PANE_TILE); GraphicalViewer graphicalViewer = (GraphicalViewer) diagramEditor.getAdapter(GraphicalViewer.class); if (graphicalViewer != null && graphicalViewer.getEditPartRegistry() != null) { ScalableFreeformRootEditPart rootEditPart = (ScalableFreeformRootEditPart) graphicalViewer.getEditPartRegistry().get(LayerManager.ID); IFigure gridFigure = ((LayerManager) rootEditPart).getLayer(LayerConstants.GRID_LAYER); gridFigure.setVisible(false); } } catch (PartInitException e) { ErrorDialog.openError(getSite().getShell(), "Error creating nested Activiti Diagram editor", null, e.getStatus()); } }
@Override public void createPartControl(Composite parent) { super.createPartControl(parent); GraphicalViewer graphicalViewer = (GraphicalViewer) getAdapter(GraphicalViewer.class); if (graphicalViewer != null && graphicalViewer.getEditPartRegistry() != null) { ScalableFreeformRootEditPart rootEditPart = (ScalableFreeformRootEditPart) graphicalViewer.getEditPartRegistry().get(LayerManager.ID); IFigure gridFigure = ((LayerManager) rootEditPart).getLayer(LayerConstants.GRID_LAYER); gridFigure.setVisible(false); } }
@Override protected void paintBorder(Graphics graphics) { graphics.setForegroundColor(ColorConstants.darkGray); Rectangle r = getBounds().getCopy(); IFigure ofig = getOwner().getFigure(); Rectangle rown = ofig.getBounds().getCopy(); if (offset != 0) rown = rown.resize(offset, offset); ofig.translateToAbsolute(rown); IFigure feedback = LayerManager.Helper.find(getOwner()).getLayer(LayerConstants.FEEDBACK_LAYER); feedback.translateToRelative(rown); int off2 = Y_OFFSET / 2; if (row) { int y2 = r.y + off2; int x1 = rown.x + VLINEWIDTH / 2; int x2 = rown.x + rown.width - VLINEWIDTH / 2 + 1; drawHBorder(graphics, off2, y2, rown.x + off2, rown.x + rown.width - off2 + 1, x1, x2); drawHBorder(graphics, off2, r.y + r.height - off2, rown.x + off2, rown.x + rown.width - off2 + 1, x1, x2); } // if (col) { graphics.drawLine(r.x + off2, rown.y + off2, r.x + off2, rown.y + rown.height - off2 + 1); graphics.drawLine(r.x + r.width - off2, rown.y + off2, r.x + r.width - off2, rown.y + rown.height - off2 + 1); // } }
@Override public void run() { GC figureCanvasGC = null; GC imageGC = null; try { final ScalableFreeformRootEditPart rootEditPart = (ScalableFreeformRootEditPart) viewer.getRootEditPart(); rootEditPart.refresh(); final IFigure rootFigure = ((LayerManager) rootEditPart).getLayer(LayerConstants.PRINTABLE_LAYERS); final EditPart editPart = viewer.getContents(); editPart.refresh(); final ERDiagram diagram = (ERDiagram) editPart.getModel(); final Rectangle rootFigureBounds = ExportToImageAction.getBounds(diagram, rootEditPart, rootFigure.getBounds()); final Control figureCanvas = viewer.getControl(); figureCanvasGC = new GC(figureCanvas); img = new Image(Display.getCurrent(), rootFigureBounds.width + 20, rootFigureBounds.height + 20); imageGC = new GC(img); imageGC.setBackground(figureCanvasGC.getBackground()); imageGC.setForeground(figureCanvasGC.getForeground()); imageGC.setFont(figureCanvasGC.getFont()); imageGC.setLineStyle(figureCanvasGC.getLineStyle()); imageGC.setLineWidth(figureCanvasGC.getLineWidth()); imageGC.setAntialias(SWT.OFF); final Graphics imgGraphics = new SWTGraphics(imageGC); imgGraphics.setBackgroundColor(figureCanvas.getBackground()); imgGraphics.fillRectangle(0, 0, rootFigureBounds.width + 20, rootFigureBounds.height + 20); imgGraphics.translate(ExportToImageAction.translateX(rootFigureBounds.x), ExportToImageAction.translateY(rootFigureBounds.y)); rootFigure.paint(imgGraphics); } finally { if (figureCanvasGC != null) { figureCanvasGC.dispose(); } if (imageGC != null) { imageGC.dispose(); } } }
@Override protected void addFeedback(IFigure figure) { LayerManager lm = (LayerManager)getCurrentViewer().getEditPartRegistry().get(LayerManager.ID); if (lm != null) { lm.getLayer(TimelineConstants.LAYER_FEEDBACK_DATA).add(figure); } }
@Override protected void removeFeedback(IFigure figure) { LayerManager lm = (LayerManager)getCurrentViewer().getEditPartRegistry().get(LayerManager.ID); if (lm != null) { lm.getLayer(TimelineConstants.LAYER_FEEDBACK_DATA).remove(figure); } }
public TimelineFeedbackManager(TimelineViewer timelineViewer, EPlan plan, AbstractEditPolicy policy) { this.timelineViewer = timelineViewer; this.editPolicy = policy; layerManager = (LayerManager)timelineViewer.getEditPartRegistry().get(LayerManager.ID); feedbackLayerData = layerManager.getLayer(TimelineConstants.LAYER_FEEDBACK_DATA); map = new HashMap<Rectangle, InvalidRangeRectangleFigure>(); planAdvisorMember = PlanAdvisorMember.get(plan); timelineViewer.getControl().addDragDetectListener( this ); timelineViewer.getControl().addMouseListener( this ); }
public IFigure getGuideLayer() { LayerManager lm = (LayerManager) diagramViewer.getEditPartRegistry() .get(LayerManager.ID); if (lm != null) return lm.getLayer(LayerConstants.GUIDE_LAYER); return null; }
/** * Convenience method to add the given figure to the feedback layer. * * @param figure * the feedback being added */ protected void addFeedback(IFigure figure) { LayerManager lm = (LayerManager) getCurrentViewer() .getEditPartRegistry().get(LayerManager.ID); if (lm == null) return; lm.getLayer(LayerConstants.FEEDBACK_LAYER).add(figure); }
/** * Convenience method to removes a figure from the feedback layer. * * @param figure * the figure being removed */ protected void removeFeedback(IFigure figure) { LayerManager lm = (LayerManager) getCurrentViewer() .getEditPartRegistry().get(LayerManager.ID); if (lm == null) return; lm.getLayer(LayerConstants.FEEDBACK_LAYER).remove(figure); }
public ReportPrintGraphicalViewerOperation( GraphicalViewer g, Drawable drawable, Device device, Rectangle region ) { this.device = device; this.region = region; this.drawable = drawable; this.viewer = g; LayerManager lm = (LayerManager) viewer.getEditPartRegistry( ) .get( LayerManager.ID ); IFigure f = lm.getLayer( LayerConstants.PRINTABLE_LAYERS ); this.printSource = f; }
public IFigure getGuideLayer( ) { LayerManager lm = (LayerManager) diagramViewer.getEditPartRegistry( ) .get( LayerManager.ID ); if ( lm != null ) return lm.getLayer( LayerConstants.GUIDE_LAYER ); return null; }
private IFigure getHandleLayer( ) { super.getLayer( LayerConstants.HANDLE_LAYER ); LayerManager manager = (LayerManager) getViewer( ).getEditPartRegistry( ) .get( LayerManager.ID ); return manager.getLayer( LayerConstants.HANDLE_LAYER ); }
public void removeLabelFigue() { if (labelFigure != null) { LayerManager lm = (LayerManager) editpart.getViewer( ) .getEditPartRegistry().get(LayerManager.ID); if (lm == null) return; lm.getLayer(LayerConstants.FEEDBACK_LAYER).remove( labelFigure ); labelFigure = null; } }
protected void addFeedback(IFigure figure) { LayerManager lm = (LayerManager) editpart.getViewer( ) .getEditPartRegistry().get(LayerManager.ID); if (lm == null) return; lm.getLayer(LayerConstants.FEEDBACK_LAYER).add(figure); }
protected void okPressed() { settings.put(LAST_OUTPUT, fileTypeCombo.getSelectionIndex()); BusyIndicator.showWhile(Display.getDefault(), new Runnable() { public void run() { GraphicalViewer viewer = editor.getViewer(); ScalableRootEditPart rootEditPart = (ScalableRootEditPart)viewer.getEditPartRegistry().get(LayerManager.ID); IFigure rootFigure = ((LayerManager)rootEditPart).getLayer(LayerConstants.PRINTABLE_LAYERS); Rectangle rootFigureBounds = rootFigure.getBounds(); Control figureCanvas = viewer.getControl(); GC figureCanvasGC = new GC(figureCanvas); Image img = new Image(null, rootFigureBounds.width, rootFigureBounds.height); GC imageGC = new GC(img); imageGC.setBackground(figureCanvasGC.getBackground()); imageGC.setForeground(figureCanvasGC.getForeground()); imageGC.setFont(figureCanvasGC.getFont()); imageGC.setLineStyle(figureCanvasGC.getLineStyle()); imageGC.setLineWidth(figureCanvasGC.getLineWidth()); // imageGC.setXORMode(figureCanvasGC.getXORMode()); Graphics imgGraphics = new SWTGraphics(imageGC); rootFigure.paint(imgGraphics); ImageData[] imgData = new ImageData[1]; imgData[0] = img.getImageData(); ImageLoader imgLoader = new ImageLoader(); imgLoader.data = imgData; String extension; if (fileTypeCombo.getText().equals("JPEG")) extension = "jpg"; else extension = fileTypeCombo.getText().toLowerCase(); String fileName = null; if (!fileText.getText().trim().endsWith("." + extension)) fileName = fileText.getText().trim() + "." + extension; else fileName = fileText.getText().trim(); int imageType = SWT.IMAGE_BMP; switch (fileTypeCombo.getSelectionIndex()) { case BMP: imageType = SWT.IMAGE_BMP; break; case JPEG: imageType = SWT.IMAGE_JPEG; break; case PNG: imageType = SWT.IMAGE_PNG; break; default: break; } imgLoader.save(fileName, imageType); figureCanvasGC.dispose(); imageGC.dispose(); img.dispose(); } }); super.okPressed(); }
/** * {@inheritDoc} */ @Override protected void showMoveBendpointFeedback(final BendpointRequest bendpointrequest) { final Relation relation = (Relation) getHost().getModel(); final RelationEditPart editPart = (RelationEditPart) getHost(); if (relation.getSource() == relation.getTarget()) { if (bendpointrequest.getIndex() != 1) { return; } final Point point = bendpointrequest.getLocation(); getConnection().translateToRelative(point); final Bendpoint rate = getRate(point); rate.setRelative(true); final float rateX = (100f - (rate.getX() / 2)) / 100; final float rateY = (100f - (rate.getY() / 2)) / 100; final ERTableEditPart tableEditPart = (ERTableEditPart) editPart.getSource(); final Rectangle bounds = tableEditPart.getFigure().getBounds(); final Rectangle rect = new Rectangle(); rect.x = (int) (bounds.x + (bounds.width * rateX)); rect.y = (int) (bounds.y + (bounds.height * rateY)); rect.width = bounds.width * rate.getX() / 100; rect.height = bounds.height * rate.getY() / 100; relation.setSourceLocationp(100, (int) (100 * rateY)); relation.setTargetLocationp((int) (100 * rateX), 100); final LayerManager manager = (LayerManager) tableEditPart.getRoot(); final IFigure layer = manager.getLayer(LayerConstants.PRIMARY_LAYER); getFeedbackLayer().setBounds(layer.getBounds()); final List children = getFeedbackLayer().getChildren(); children.clear(); getFeedbackLayer().repaint(); final ZoomManager zoomManager = ((ScalableFreeformRootEditPart) getHost().getRoot()).getZoomManager(); final double zoom = zoomManager.getZoom(); final Polyline feedbackFigure = new Polyline(); feedbackFigure.addPoint(new Point((int) (rect.x * zoom), (int) (rect.y * zoom))); feedbackFigure.addPoint(new Point((int) (rect.x * zoom), (int) ((rect.y + rect.height) * zoom))); feedbackFigure.addPoint(new Point((int) ((rect.x + rect.width) * zoom), (int) ((rect.y + rect.height) * zoom))); feedbackFigure.addPoint(new Point((int) ((rect.x + rect.width) * zoom), (int) (rect.y * zoom))); feedbackFigure.addPoint(new Point((int) (rect.x * zoom), (int) (rect.y * zoom))); feedbackFigure.setLineStyle(SWT.LINE_DASH); feedbackFigure.translateToRelative(feedbackFigure.getLocation()); addFeedback(feedbackFigure); } else { super.showMoveBendpointFeedback(bendpointrequest); } }
public static ImageInfo createImage(final GraphicalViewer viewer, final int format, final String path) { GC figureCanvasGC = null; GC imageGC = null; try { final ScalableFreeformRootEditPart rootEditPart = (ScalableFreeformRootEditPart) viewer.getRootEditPart(); rootEditPart.refresh(); final IFigure rootFigure = ((LayerManager) rootEditPart).getLayer(LayerConstants.PRINTABLE_LAYERS); final EditPart editPart = viewer.getContents(); editPart.refresh(); final ERDiagram diagram = (ERDiagram) editPart.getModel(); final Rectangle rootFigureBounds = getBounds(diagram, rootEditPart, rootFigure.getBounds()); final Control figureCanvas = viewer.getControl(); figureCanvasGC = new GC(figureCanvas); final Image img = new Image(Display.getCurrent(), rootFigureBounds.width + 20, rootFigureBounds.height + 20); imageGC = new GC(img); imageGC.setBackground(figureCanvasGC.getBackground()); imageGC.setForeground(figureCanvasGC.getForeground()); imageGC.setFont(figureCanvasGC.getFont()); imageGC.setLineStyle(figureCanvasGC.getLineStyle()); imageGC.setLineWidth(figureCanvasGC.getLineWidth()); imageGC.setAntialias(SWT.OFF); // imageGC.setInterpolation(SWT.HIGH); final Graphics imgGraphics = new SWTGraphics(imageGC); imgGraphics.setBackgroundColor(figureCanvas.getBackground()); imgGraphics.fillRectangle(0, 0, rootFigureBounds.width + 20, rootFigureBounds.height + 20); final int translateX = translateX(rootFigureBounds.x); final int translateY = translateY(rootFigureBounds.y); imgGraphics.translate(translateX, translateY); rootFigure.paint(imgGraphics); final Map<TableView, Location> tableLoacationMap = getTableLocationMap(rootEditPart, translateX, translateY, diagram); final ImageInfo imageInfo = new ImageInfo(img, tableLoacationMap); imageInfo.setFormat(format); imageInfo.setPath(path); return imageInfo; } finally { if (figureCanvasGC != null) { figureCanvasGC.dispose(); } if (imageGC != null) { imageGC.dispose(); } } }
/** * {@inheritDoc} */ @Override protected void showMoveBendpointFeedback(BendpointRequest bendpointrequest) { Relation relation = (Relation) getHost().getModel(); RelationEditPart editPart = (RelationEditPart) this.getHost(); Category currentCategory = getDiagram().getCurrentCategory(); if (relation.getSource() == relation.getTarget()) { if (bendpointrequest.getIndex() != 1) { return; } Point point = bendpointrequest.getLocation(); this.getConnection().translateToRelative(point); Bendpoint rate = this.getRate(point); rate.setRelative(true); float rateX = (100f - (rate.getX() / 2)) / 100; float rateY = (100f - (rate.getY() / 2)) / 100; ERTableEditPart tableEditPart = (ERTableEditPart) editPart .getSource(); Rectangle bounds = tableEditPart.getFigure().getBounds(); Rectangle rect = new Rectangle(); rect.x = (int) (bounds.x + (bounds.width * rateX)); rect.y = (int) (bounds.y + (bounds.height * rateY)); rect.width = (int) (bounds.width * rate.getX() / 100); rect.height = (int) (bounds.height * rate.getY() / 100); relation.setSourceLocationp(currentCategory, 100, (int) (100 * rateY)); relation.setTargetLocationp(currentCategory, (int) (100 * rateX), 100); LayerManager manager = (LayerManager) tableEditPart.getRoot(); IFigure layer = manager.getLayer(LayerConstants.PRIMARY_LAYER); this.getFeedbackLayer().setBounds(layer.getBounds()); List children = this.getFeedbackLayer().getChildren(); children.clear(); this.getFeedbackLayer().repaint(); ZoomManager zoomManager = ((ScalableFreeformRootEditPart) this .getHost().getRoot()).getZoomManager(); double zoom = zoomManager.getZoom(); Polyline feedbackFigure = new Polyline(); feedbackFigure.addPoint(new Point((int) (rect.x * zoom), (int) (rect.y * zoom))); feedbackFigure.addPoint(new Point((int) (rect.x * zoom), (int) ((rect.y + rect.height) * zoom))); feedbackFigure.addPoint(new Point( (int) ((rect.x + rect.width) * zoom), (int) ((rect.y + rect.height) * zoom))); feedbackFigure .addPoint(new Point((int) ((rect.x + rect.width) * zoom), (int) (rect.y * zoom))); feedbackFigure.addPoint(new Point((int) (rect.x * zoom), (int) (rect.y * zoom))); feedbackFigure.setLineStyle(SWT.LINE_DASH); feedbackFigure.translateToRelative(feedbackFigure.getLocation()); this.addFeedback(feedbackFigure); } else { super.showMoveBendpointFeedback(bendpointrequest); } }
public static ImageInfo createImage(GraphicalViewer viewer, int format, String path) { GC figureCanvasGC = null; GC imageGC = null; try { ScalableFreeformRootEditPart rootEditPart = (ScalableFreeformRootEditPart) viewer .getRootEditPart(); rootEditPart.refresh(); IFigure rootFigure = ((LayerManager) rootEditPart) .getLayer(LayerConstants.PRINTABLE_LAYERS); EditPart editPart = viewer.getContents(); editPart.refresh(); ERDiagram diagram = (ERDiagram) editPart.getModel(); Rectangle rootFigureBounds = getBounds(diagram, rootEditPart, rootFigure.getBounds()); Control figureCanvas = viewer.getControl(); figureCanvasGC = new GC(figureCanvas); Image img = new Image(Display.getCurrent(), rootFigureBounds.width + 20, rootFigureBounds.height + 20); imageGC = new GC(img); imageGC.setBackground(figureCanvasGC.getBackground()); imageGC.setForeground(figureCanvasGC.getForeground()); imageGC.setFont(figureCanvasGC.getFont()); imageGC.setLineStyle(figureCanvasGC.getLineStyle()); imageGC.setLineWidth(figureCanvasGC.getLineWidth()); imageGC.setAntialias(SWT.OFF); // imageGC.setInterpolation(SWT.HIGH); Graphics imgGraphics = new SWTGraphics(imageGC); imgGraphics.setBackgroundColor(figureCanvas.getBackground()); imgGraphics.fillRectangle(0, 0, rootFigureBounds.width + 20, rootFigureBounds.height + 20); int translateX = translateX(rootFigureBounds.x); int translateY = translateY(rootFigureBounds.y); imgGraphics.translate(translateX, translateY); rootFigure.paint(imgGraphics); Map<TableView, Location> tableLoacationMap = getTableLocationMap( rootEditPart, translateX, translateY, diagram); ImageInfo imageInfo = new ImageInfo(img, tableLoacationMap); imageInfo.setFormat(format); imageInfo.setPath(path); return imageInfo; } finally { if (figureCanvasGC != null) { figureCanvasGC.dispose(); } if (imageGC != null) { imageGC.dispose(); } } }
private static void saveEditorContentsAsImage(IEditorPart editorPart, GraphicalViewer viewer, String saveFilePath, int format) { /* * 1. First get the figure whose visuals we want to save as image. So we * would like to save the rooteditpart which actually hosts all the * printable layers. * * NOTE: ScalableRootEditPart manages layers and is registered * graphicalviewer's editpartregistry with the key LayerManager.ID ... * well that is because ScalableRootEditPart manages all layers that are * hosted on a FigureCanvas. Many layers exist for doing different * things */ Map editPartRegistry = viewer.getEditPartRegistry(); LayerManager rootEditPart = (LayerManager) editPartRegistry.get(LayerManager.ID); IFigure rootFigure = rootEditPart.getLayer(LayerConstants.PRINTABLE_LAYERS); for (Object obj : editPartRegistry.values()) { if (obj instanceof ScreenEditPart){ rootFigure = ((ScreenEditPart)obj).getFigure(); break; } } Rectangle rootFigureBounds = rootFigure.getBounds(); /* * 2. Now we want to get the GC associated with the control on which all * figures are painted by SWTGraphics. For that first get the SWT * Control associated with the viewer on which the rooteditpart is set * as contents */ Control figureCanvas = viewer.getControl(); GC figureCanvasGC = new GC(figureCanvas); /* * 3. Create a new Graphics for an Image onto which we want to paint * rootFigure */ Image img = new Image(null, rootFigureBounds.width, rootFigureBounds.height); GC imageGC = new GC(img); imageGC.setBackground(figureCanvasGC.getBackground()); imageGC.setForeground(figureCanvasGC.getForeground()); imageGC.setFont(figureCanvasGC.getFont()); imageGC.setLineStyle(figureCanvasGC.getLineStyle()); imageGC.setLineWidth(figureCanvasGC.getLineWidth()); imageGC.setXORMode(figureCanvasGC.getXORMode()); Graphics imgGraphics = new SWTGraphics(imageGC); /* * 4. Draw rootFigure onto image. After that image will be ready for * save */ rootFigure.paint(imgGraphics); /* 5. Save image */ ImageData[] imgData = new ImageData[1]; imgData[0] = img.getImageData(); ImageLoader imgLoader = new ImageLoader(); imgLoader.data = imgData; imgLoader.save(saveFilePath, format); /* release OS resources */ figureCanvasGC.dispose(); imageGC.dispose(); img.dispose(); }
/** * @see org.eclipse.jface.action.Action#run() */ public void run() { if (getSelectedObjects().size() < 1) return; Object obj = getSelectedObjects().get(0); if (!(obj instanceof EditPart)) return; ScalableFreeformRootEditPart root = (ScalableFreeformRootEditPart) ((EditPart) obj).getRoot(); ; ScrollingGraphicalViewer viewer = (ScrollingGraphicalViewer) root.getViewer(); FileDialog dlg = new FileDialog(viewer.getControl().getShell(), SWT.SAVE); dlg.setFilterNames(new String[] { "JPEG Files (*.jpg)", "PNG Files (*.png)", "Bitmap Files (*.bmp)" }); dlg.setFilterExtensions(new String[] { "*.jpg", "*.png", "*.bmp" }); String fileName = dlg.open(); if (fileName == null) return; LayerManager lm = (LayerManager) viewer.getEditPartRegistry().get(LayerManager.ID); IFigure figure = lm.getLayer(LayerConstants.PRINTABLE_LAYERS); // IFigure backgroundfigure = lm.getLayer(LayerConstants.FEEDBACK_LAYER); // Display display = getWorkbenchPart().getSite().getWorkbenchWindow().getWorkbench().getDisplay(); // Image img = new Image(display, figure.getSize().width, figure.getSize().height); // GC gc = new GC(img); // SWTGraphics graphics = new SWTGraphics(gc); // // figure.setLocation(new Point(0, 0)); // backgroundfigure.setLocation(new Point(0, 0)); // try { // root.getZoomManager().setZoom(0.001); // figure.paint(graphics); // backgroundfigure.paint(graphics); // } finally { // root.getZoomManager().setZoom(1); // figure.paint(graphics); // gc.dispose(); // graphics.dispose(); // } Diagram diagram = (Diagram) ((EditPart) obj).getModel(); DiagramImageUtil diagramUtil = new DiagramImageUtil(diagram); Display.getDefault().syncExec(diagramUtil); Image img = diagramUtil.getDiagramImage(); ImageLoader loader = new ImageLoader(); if (img == null) { img = new Image(null, figure.getSize().width, figure.getSize().height); } loader.data = new ImageData[] { img.getImageData() }; if (fileName.toLowerCase().endsWith("jpg")) { loader.save(fileName, SWT.IMAGE_JPEG); } else if (fileName.toLowerCase().endsWith("png")) { loader.save(fileName, SWT.IMAGE_PNG); } else { loader.save(fileName, SWT.IMAGE_BMP); } }
private void showCellEditorFrame() { LayerManager.Helper.find(getEditPart()) .getLayer(LayerConstants.FEEDBACK_LAYER) .add(getCellEditorFrame()); placeBorder(); }
private void marshallImage() { try { // Retrieve GraphicalViewer from the save handler final GraphicalViewer graphicalViewer = ActivitiDiagramEditor.getActiveGraphicalViewer(); if (graphicalViewer == null || graphicalViewer.getEditPartRegistry() == null) return; final ScalableFreeformRootEditPart rootEditPart = (ScalableFreeformRootEditPart) graphicalViewer.getEditPartRegistry().get(LayerManager.ID); final IFigure rootFigure = ((LayerManager) rootEditPart).getLayer(LayerConstants.PRINTABLE_LAYERS); final IFigure gridFigure = ((LayerManager) rootEditPart).getLayer(LayerConstants.GRID_LAYER); final Rectangle rootFigureBounds = rootFigure.getBounds(); final boolean toggleRequired = gridFigure.isShowing(); final Display display = Display.getDefault(); final Image img = new Image(display, rootFigureBounds.width, rootFigureBounds.height); final GC imageGC = new GC(img); final SWTGraphics grap = new SWTGraphics(imageGC); // Access UI thread from runnable to print the canvas to the image display.syncExec(new Runnable() { public void run() { if (toggleRequired) { // Disable any grids temporarily gridFigure.setVisible(false); } // Deselect any selections graphicalViewer.deselectAll(); rootFigure.paint(grap); } }); ImageLoader imgLoader = new ImageLoader(); imgLoader.data = new ImageData[] { img.getImageData() }; ByteArrayOutputStream baos = new ByteArrayOutputStream(imgLoader.data.length); imgLoader.save(baos, SWT.IMAGE_PNG); imageGC.dispose(); img.dispose(); // Access UI thread from runnable display.syncExec(new Runnable() { public void run() { if (toggleRequired) { // Re-enable any grids gridFigure.setVisible(true); } } }); final byte[] bytes = baos.toByteArray(); final ByteArrayInputStream bais = new ByteArrayInputStream(bytes); saveResource(getRelativeURIForDiagram(diagram, FILENAME_PATTERN), bais, this.monitor); } catch (Exception e) { e.printStackTrace(); addProblemToDiagram(diagram, "An exception occurred while creating the image: " + e.getCause(), null); } }
public IFigure getGuideLayer() { LayerManager lm = (LayerManager) diagramViewer.getEditPartRegistry().get(LayerManager.ID); if (lm != null) return lm.getLayer(LayerConstants.GUIDE_LAYER); return null; }
public static Image createImage(GraphicalViewer viewer) { Image img = null; GC figureCanvasGC = null; GC imageGC = null; try { final ScalableFreeformRootEditPart rootEditPart = (ScalableFreeformRootEditPart) viewer.getEditPartRegistry().get(LayerManager.ID); rootEditPart.refresh(); final IFigure rootFigure = ((LayerManager) rootEditPart).getLayer(LayerConstants.PRINTABLE_LAYERS); final Object diagram = extractDiagram(viewer); final Rectangle rootFigureBounds = getBounds(diagram, rootEditPart, rootFigure.getBounds()); final Control figureCanvas = viewer.getControl(); figureCanvasGC = new GC(figureCanvas); img = new Image(Display.getCurrent(), rootFigureBounds.width + 20, rootFigureBounds.height + 20); imageGC = new GC(img); imageGC.setBackground(figureCanvasGC.getBackground()); imageGC.setForeground(figureCanvasGC.getForeground()); imageGC.setFont(figureCanvasGC.getFont()); imageGC.setLineStyle(figureCanvasGC.getLineStyle()); imageGC.setLineWidth(figureCanvasGC.getLineWidth()); imageGC.setAntialias(SWT.OFF); // imageGC.setInterpolation(SWT.HIGH); final Graphics imgGraphics = new SWTGraphics(imageGC); imgGraphics.setBackgroundColor(figureCanvas.getBackground()); imgGraphics.fillRectangle(0, 0, rootFigureBounds.width + 20, rootFigureBounds.height + 20); imgGraphics.translate(translateX(rootFigureBounds.x), translateY(rootFigureBounds.y)); rootFigure.paint(imgGraphics); return img; } finally { if (figureCanvasGC != null) { figureCanvasGC.dispose(); } if (imageGC != null) { imageGC.dispose(); } } }