/** * Removes unnecessary properties from not enabled renderers */ private void reloadProperties() { if(properties == null){ initProperties(); }else{ PreviewProperties newProperties = new PreviewProperties();//Ensure that the properties object doesn't change //Properties from renderers for (Renderer renderer : getManagedEnabledRenderers()) { PreviewProperty[] props = renderer.getProperties(); for (PreviewProperty p : props) { newProperties.addProperty(p); if (properties.hasProperty(p.getName())) { newProperties.putValue(p.getName(), properties.getValue(p.getName()));//Keep old values } } } //Remove old properties (this keeps simple values) for (PreviewProperty p : properties.getProperties()) { properties.removeProperty(p); } //Set new properties for (PreviewProperty property : newProperties.getProperties()) { properties.addProperty(property); } } }
private synchronized void setExportProperties(PreviewModel m) { PreviewProperties props = m.getProperties(); props.putValue(PreviewProperty.VISIBILITY_RATIO, 1.0F); props.putValue("width", width); props.putValue("height", height); oldColor = props.getColorValue(PreviewProperty.BACKGROUND_COLOR); if (transparentBackground) { props.putValue( PreviewProperty.BACKGROUND_COLOR, null); //Transparent } props.putValue(PreviewProperty.MARGIN, new Float(margin)); }
@Override public RenderTarget buildRenderTarget(PreviewModel previewModel) { CanvasSize cs = previewModel.getGraphicsCanvasSize(); PreviewProperties properties = previewModel.getProperties(); float marginBottom = properties.getFloatValue(PDFTarget.MARGIN_BOTTOM); float marginLeft = properties.getFloatValue(PDFTarget.MARGIN_LEFT); float marginRight = properties.getFloatValue(PDFTarget.MARGIN_RIGHT); float marginTop = properties.getFloatValue(PDFTarget.MARGIN_TOP); com.itextpdf.text.Rectangle pageSize = properties.getValue(PDFTarget.PAGESIZE); boolean landscape = properties.getBooleanValue(PDFTarget.LANDSCAPE); PdfContentByte cb = properties.getValue(PDFTarget.PDF_CONTENT_BYTE); PDFRenderTargetImpl renderTarget = new PDFRenderTargetImpl( cb, cs, pageSize, marginLeft, marginRight, marginTop, marginBottom, landscape); return renderTarget; }
private synchronized void discardExportProperties(PreviewModel m) { PreviewProperties props = m.getProperties(); props.removeSimpleValue("width"); props.removeSimpleValue("height"); props.removeSimpleValue(PreviewProperty.MARGIN); props.putValue(PreviewProperty.BACKGROUND_COLOR, oldColor); } }
properties.putValue(EDGE_MIN_WEIGHT, minWeight); properties.putValue(EDGE_MAX_WEIGHT, maxWeight); if (!properties.hasProperty(BEZIER_CURVENESS)) { properties.putValue(BEZIER_CURVENESS, defaultBezierCurviness); final boolean rescaleWeight = properties.getBooleanValue( PreviewProperty.EDGE_RESCALE_WEIGHT); double minRescaledWeight = properties.getFloatValue(PreviewProperty.EDGE_RESCALE_WEIGHT_MIN); double maxRescaledWeight = properties.getFloatValue(PreviewProperty.EDGE_RESCALE_WEIGHT_MAX); properties.putValue(PreviewProperty.EDGE_RESCALE_WEIGHT_MIN, defaultRescaleWeightMin); properties.putValue(PreviewProperty.EDGE_RESCALE_WEIGHT_MAX, defaultRescaleWeightMax); if (!(Boolean) item.getData(EdgeItem.SELF_LOOP)) { final float edgeRadius = properties.getFloatValue(PreviewProperty.EDGE_RADIUS); float arrowSize = properties.getFloatValue( PreviewProperty.ARROW_SIZE); if (arrowSize < 0F) { + properties.getFloatValue(PreviewProperty.NODE_BORDER_WIDTH) / 2f //We have to divide by 2 because the border stroke is not only an outline but also draws the other half of the curve inside the node + arrowRadiusSize); item.setData(TARGET_RADIUS, targetRadius); final float sourceRadius = -(edgeRadius
@Override public void setMoving(boolean moving) { previewModel.getProperties().putValue(PreviewProperty.MOVING, moving); }
private synchronized void initProperties() { if (properties == null) { properties = new PreviewProperties(); //Properties from renderers for (Renderer renderer : getManagedEnabledRenderers()) { PreviewProperty[] props = renderer.getProperties(); for (PreviewProperty p : props) { properties.addProperty(p); } } //Default preset properties.applyPreset(new DefaultPreset()); //Defaut values properties.putValue(PreviewProperty.VISIBILITY_RATIO, 1f); } }
@Override public void duplicate(Workspace source, Workspace destination) { PreviewController previewController=Lookup.getDefault().lookup(PreviewController.class); PreviewModel sourceModel=previewController.getModel(source); PreviewModel destModel=previewController.getModel(destination); destModel.setManagedRenderers(sourceModel.getManagedRenderers()); for(PreviewProperty property:sourceModel.getProperties().getProperties()){ destModel.getProperties().putValue(property.getName(), property.getValue()); } for(Entry<String,Object> property:sourceModel.getProperties().getSimpleValues()){ destModel.getProperties().putValue(property.getKey(), property.getValue()); } } }
@Override public void preProcess(PreviewModel previewModel) { PreviewProperties properties = previewModel.getProperties(); if (properties.getBooleanValue(PreviewProperty.EDGE_LABEL_SHORTEN)) { int maxChars = properties.getIntValue(PreviewProperty.EDGE_LABEL_MAX_CHAR); for (Item item : EdgeLabelsItems) { String label = item.getData(EdgeLabelItem.LABEL); Item edgeItem = previewModel.getItem(Item.EDGE, edge); EdgeColor edgeColor = (EdgeColor) properties.getValue(PreviewProperty.EDGE_COLOR); NodeItem sourceItem = (NodeItem) edgeItem.getData(EdgeRenderer.SOURCE); NodeItem targetItem = (NodeItem) edgeItem.getData(EdgeRenderer.TARGET); item.setData(LABEL_Y, middle.y); } else if (properties.getBooleanValue(PreviewProperty.EDGE_CURVED)) { direction.normalize(); float factor = properties.getFloatValue(EdgeRenderer.BEZIER_CURVENESS) * length; font = properties.getFontValue(PreviewProperty.EDGE_LABEL_FONT);
public void renderSquaresJava2D(Item item, G2DTarget target, PreviewProperties properties) { //Params Float x = item.getData(NodeItem.X); Float y = item.getData(NodeItem.Y); Float size = item.getData(NodeItem.SIZE); Color color = item.getData(NodeItem.COLOR); Color borderColor = ((DependantColor) properties.getValue(PreviewProperty.NODE_BORDER_COLOR)).getColor(color); float borderSize = properties.getFloatValue(PreviewProperty.NODE_BORDER_WIDTH); int alpha = (int) ((properties.getFloatValue(PreviewProperty.NODE_OPACITY) / 100f) * 255f); if (alpha > 255) { alpha = 255; } //Graphics Graphics2D graphics = target.getGraphics(); if (borderSize > 0) { Stroke stroke = new BasicStroke(borderSize); graphics.setStroke(stroke); graphics.setColor(new Color(borderColor.getRed(), borderColor.getGreen(), borderColor.getBlue(), alpha)); graphics.draw(new Rectangle(x.intValue(), y.intValue(), size.intValue(), size.intValue())); } graphics.setColor(new Color(color.getRed(), color.getGreen(), color.getBlue(), alpha)); graphics.fill(new Rectangle(x.intValue(), y.intValue(), size.intValue(), size.intValue())); }
previewModel.getProperties().putValue(PreviewProperty.DIRECTED, graphModel.isDirected() || graphModel.isMixed()); if (previewModel.getProperties().getFloatValue(PreviewProperty.VISIBILITY_RATIO) < 1f) { float visibilityRatio = previewModel.getProperties().getFloatValue(PreviewProperty.VISIBILITY_RATIO); GraphView reducedView = graphModel.copyView(graph.getView()); graph = graphModel.getGraph(reducedView); if (previewModel.getProperties().getFloatValue(PreviewProperty.VISIBILITY_RATIO) < 1f) { graphModel.destroyView(graph.getView());
private boolean showNodes(PreviewProperties properties) { return properties.getFloatValue(PreviewProperty.NODE_OPACITY) > 0; }
private boolean showArrows(PreviewProperties properties) { return properties.getBooleanValue(PreviewProperty.SHOW_EDGES) && properties.getBooleanValue(PreviewProperty.DIRECTED) && !properties.getBooleanValue(PreviewProperty.EDGE_CURVED) && !properties.getBooleanValue(PreviewProperty.MOVING); }
model.getProperties().putValue(PreviewProperty.SHOW_NODE_LABELS, Boolean.TRUE); model.getProperties().putValue(PreviewProperty.EDGE_COLOR, new EdgeColor(Color.GRAY)); model.getProperties().putValue(PreviewProperty.EDGE_THICKNESS, new Float(0.1f)); model.getProperties().putValue(PreviewProperty.NODE_LABEL_FONT, model.getProperties().getFontValue(PreviewProperty.NODE_LABEL_FONT).deriveFont(8));
if (propName != null) { if (!isSimpleValue) {//Read PreviewProperty: PreviewProperty p = props.getProperty(propName); if (p != null) { Object value = Serialization.readValueFromText(reader.getText(), p.getType()); Object value = Serialization.readValueFromText(reader.getText(), simpleValueClass); if (value != null) { props.putValue(propName, value);
@Override public void preProcess(PreviewModel previewModel) { PreviewProperties properties = previewModel.getProperties(); //Check if the boolean property is set if (properties.getBooleanValue(MUTUALEGDE_HIGHLIGHT)) { Color color = properties.getColorValue(MUTUALEGDE_HIGHLIGHT_COLOR); // Retrieve all edge items in the model // As this renderer is called after the EdgeRenderer (which has a position=100, // and this renderer has no specific position) we know these edge // items are well defined and already posses a color Item[] edgeItems = previewModel.getItems(Item.EDGE); for (Item item : edgeItems) { EdgeItem edgeItem = (EdgeItem) item; Boolean mutual = edgeItem.getData(EdgeItem.MUTUAL); if (mutual) { //If mutual edge, change the color edgeItem.setData(EdgeItem.COLOR, color); } } } }
/** * Returns an the property value as a <code>Color</code>. * @param property the property's name * @return the property's value or <code>null</code> if not found * @throws ClassCastException if the property can't be cast to <code>Color</code> */ public Color getColorValue(String property) { return getValue(property, null); }
@Override public void preProcess(PreviewModel previewModel) { PreviewProperties properties = previewModel.getProperties(); if (properties.getBooleanValue(PreviewProperty.NODE_LABEL_SHORTEN)) { int maxChars = properties.getIntValue(PreviewProperty.NODE_LABEL_MAX_CHAR); for (Item item : nodeLabelsItems) { String label = item.getData(NodeLabelItem.LABEL); Font font = properties.getFontValue(PreviewProperty.NODE_LABEL_FONT); for (Item item : previewModel.getItems(Item.NODE_LABEL)) { Float nodeSize = item.getData(NODE_SIZE); fontSize = item.getData(NodeLabelItem.SIZE); if (properties.getBooleanValue(PreviewProperty.NODE_LABEL_PROPORTIONAL_SIZE)) { fontSize *= nodeSize / 10f;
@Override public Item[] getItems(Graph graph) { // Workspace workspace = graphModel.getWorkspace(); PreviewProperties properties = Lookup.getDefault().lookup(PreviewController.class).getModel().getProperties(); if (properties.hasProperty("display-label.node.id")) { String nodeId = properties.getStringValue("display-label.node.id"); return new Item[]{new LabelItem(graph.getNode(nodeId))}; } else { return new Item[0]; } }
public void refresh(PreviewModel m, RenderTarget target) { if (m == null) { return; } if (!inited) { CanvasSize cs = getSheetCanvasSize(m); scaling = computeDefaultScaling(cs); fit(cs); inited = true; } g2.setTransform(new AffineTransform()); background = m.getProperties() .getColorValue(PreviewProperty.BACKGROUND_COLOR); if (background != null) { g2.setColor(background); g2.fillRect(0, 0, width, height); } // user zoom Vector center = new Vector(width / 2F, height / 2F); Vector scaledCenter = Vector.mult(center, scaling); Vector scaledTrans = Vector.sub(center, scaledCenter); g2.translate(scaledTrans.x, scaledTrans.y); g2.scale(scaling, scaling); // user move g2.translate(trans.x, trans.y); //Draw target previewController.render(target); }