@Override public Item[] getItems(Graph graph, AttributeModel attributeModel) { LegendModel legendManager = LegendController.getInstance().getLegendModel(); ArrayList<Item> legendItems = legendManager.getLegendItems(); ArrayList<Item> items = new ArrayList<Item>(); for (Item item : legendItems) { if (isBuilderForItem(item)) { items.add(item); } } return items.toArray(new Item[items.size()]); }
/** * Function that automatically saves a property using its PropertyName and the Value attached to * it. Only works if property has a known value type. Known types: <code>Integer</code>, <code> * Float</code>, <code> String</code>,, <code> Color</code>, <code> LegendItem.Alignment</code>, * <code> LegendItem.Shape</code> and <code> LegendItem.Direction</code> * * @param writer the XMLStreamWriter to write to * @param property property to be saved * @param previewProperties Current workspace PreviewProperties * @throws XMLStreamException */ protected void writeXMLFromSingleProperty( XMLStreamWriter writer, PreviewProperty property, PreviewProperties previewProperties) throws XMLStreamException { // Better read from previewProperties instead of just the property, because LegendMouseListener // puts origin x and y in previewProperties. Object propertyValue = previewProperties.getValue(property.getName()); if (propertyValue != null) { String text = writeValueAsText(propertyValue); writer.writeStartElement(XML_PROPERTY); String name = LegendModel.getPropertyFromPreviewProperty(property); System.out.println("@Var: SAVING XML name: " + name + " , " + text); writer.writeAttribute(XML_NAME, name); writer.writeAttribute(XML_CLASS, propertyValue.getClass().getName()); writer.writeCharacters(text); writer.writeEndElement(); } }
private PreviewProperty createLegendProperty(Item item, int property, Object value) { PreviewProperty previewProperty = null; Integer itemIndex = item.getData(LegendItem.ITEM_INDEX); String propertyString = LegendModel.getProperty(LegendProperty.LEGEND_PROPERTIES, itemIndex, property); switch (property) { case LegendProperty.LABEL: { previewProperty = PreviewProperty.createProperty( this, propertyString, String.class, NbBundle.getMessage( AbstractLegendItemBuilder.class, "LegendItem.property.label.displayName"), NbBundle.getMessage( AbstractLegendItemBuilder.class, "LegendItem.property.label.description"), PreviewProperty.CATEGORY_LEGEND_PROPERTY) .setValue(value); break; } case LegendProperty.IS_DISPLAYING: { previewProperty = PreviewProperty.createProperty( this, propertyString, Boolean.class, NbBundle.getMessage( AbstractLegendItemBuilder.class, "LegendItem.property.isDisplaying.displayName"), NbBundle.getMessage( AbstractLegendItemBuilder.class, "LegendItem.property.isDisplaying.description"), PreviewProperty.CATEGORY_LEGEND_PROPERTY) .setValue(value); break; } case LegendProperty.USER_ORIGIN_X: { previewProperty = PreviewProperty.createProperty( this, propertyString, Float.class, NbBundle.getMessage( AbstractLegendItemBuilder.class, "LegendItem.property.originX.displayName"), NbBundle.getMessage( AbstractLegendItemBuilder.class, "LegendItem.property.originX.description"), PreviewProperty.CATEGORY_LEGEND_PROPERTY) .setValue(value); break; } case LegendProperty.USER_ORIGIN_Y: { previewProperty = PreviewProperty.createProperty( this, propertyString, Float.class, NbBundle.getMessage( AbstractLegendItemBuilder.class, "LegendItem.property.originY.displayName"), NbBundle.getMessage( AbstractLegendItemBuilder.class, "LegendItem.property.originY.description"), PreviewProperty.CATEGORY_LEGEND_PROPERTY) .setValue(value); break; } case LegendProperty.WIDTH: { previewProperty = PreviewProperty.createProperty( this, propertyString, Float.class, NbBundle.getMessage( AbstractLegendItemBuilder.class, "LegendItem.property.width.displayName"), NbBundle.getMessage( AbstractLegendItemBuilder.class, "LegendItem.property.width.description"), PreviewProperty.CATEGORY_LEGEND_PROPERTY) .setValue(value); break; } case LegendProperty.HEIGHT: { previewProperty = PreviewProperty.createProperty( this, propertyString, Float.class, NbBundle.getMessage( AbstractLegendItemBuilder.class, "LegendItem.property.height.displayName"), NbBundle.getMessage( AbstractLegendItemBuilder.class, "LegendItem.property.height.description"), PreviewProperty.CATEGORY_LEGEND_PROPERTY) .setValue(value); break; } case LegendProperty.BACKGROUND_IS_DISPLAYING: { previewProperty = PreviewProperty.createProperty( this, propertyString, Boolean.class, NbBundle.getMessage( AbstractLegendItemBuilder.class, "LegendItem.property.background.isDisplaying.displayName"), NbBundle.getMessage( AbstractLegendItemBuilder.class, "LegendItem.property.background.isDisplaying.description"), PreviewProperty.CATEGORY_LEGEND_PROPERTY) .setValue(value); break; } case LegendProperty.BACKGROUND_COLOR: { previewProperty = PreviewProperty.createProperty( this, propertyString, Color.class, NbBundle.getMessage( AbstractLegendItemBuilder.class, "LegendItem.property.background.color.displayName"), NbBundle.getMessage( AbstractLegendItemBuilder.class, "LegendItem.property.background.color.description"), PreviewProperty.CATEGORY_LEGEND_PROPERTY) .setValue(value); break; } case LegendProperty.BORDER_IS_DISPLAYING: { previewProperty = PreviewProperty.createProperty( this, propertyString, Boolean.class, NbBundle.getMessage( AbstractLegendItemBuilder.class, "LegendItem.property.border.isDisplaying.displayName"), NbBundle.getMessage( AbstractLegendItemBuilder.class, "LegendItem.property.border.isDisplaying.description"), PreviewProperty.CATEGORY_LEGEND_PROPERTY) .setValue(value); break; } case LegendProperty.BORDER_COLOR: { previewProperty = PreviewProperty.createProperty( this, propertyString, Color.class, NbBundle.getMessage( AbstractLegendItemBuilder.class, "LegendItem.property.border.color.displayName"), NbBundle.getMessage( AbstractLegendItemBuilder.class, "LegendItem.property.border.color.description"), PreviewProperty.CATEGORY_LEGEND_PROPERTY) .setValue(value); break; } case LegendProperty.BORDER_LINE_THICK: { previewProperty = PreviewProperty.createProperty( this, propertyString, Integer.class, NbBundle.getMessage( AbstractLegendItemBuilder.class, "LegendItem.property.border.lineThick.displayName"), NbBundle.getMessage( AbstractLegendItemBuilder.class, "LegendItem.property.border.lineThick.description"), PreviewProperty.CATEGORY_LEGEND_PROPERTY) .setValue(value); break; } case LegendProperty.TITLE_IS_DISPLAYING: { previewProperty = PreviewProperty.createProperty( this, propertyString, Boolean.class, NbBundle.getMessage( AbstractLegendItemBuilder.class, "LegendItem.property.title.isDisplaying.displayName"), NbBundle.getMessage( AbstractLegendItemBuilder.class, "LegendItem.property.title.isDisplaying.description"), PreviewProperty.CATEGORY_LEGEND_PROPERTY) .setValue(value); break; } case LegendProperty.TITLE: { previewProperty = PreviewProperty.createProperty( this, propertyString, String.class, NbBundle.getMessage( AbstractLegendItemBuilder.class, "LegendItem.property.title.displayName"), NbBundle.getMessage( AbstractLegendItemBuilder.class, "LegendItem.property.title.description"), PreviewProperty.CATEGORY_LEGEND_PROPERTY) .setValue(value); break; } case LegendProperty.TITLE_FONT: { previewProperty = PreviewProperty.createProperty( this, propertyString, Font.class, NbBundle.getMessage( AbstractLegendItemBuilder.class, "LegendItem.property.title.font.displayName"), NbBundle.getMessage( AbstractLegendItemBuilder.class, "LegendItem.property.title.font.description"), PreviewProperty.CATEGORY_LEGEND_PROPERTY) .setValue(value); break; } case LegendProperty.TITLE_FONT_COLOR: { previewProperty = PreviewProperty.createProperty( this, propertyString, Color.class, NbBundle.getMessage( AbstractLegendItemBuilder.class, "LegendItem.property.title.font.color.displayName"), NbBundle.getMessage( AbstractLegendItemBuilder.class, "LegendItem.property.title.font.color.description"), PreviewProperty.CATEGORY_LEGEND_PROPERTY) .setValue(value); break; } case LegendProperty.TITLE_ALIGNMENT: { previewProperty = PreviewProperty.createProperty( this, propertyString, Alignment.class, NbBundle.getMessage( AbstractLegendItemBuilder.class, "LegendItem.property.title.alignment.displayName"), NbBundle.getMessage( AbstractLegendItemBuilder.class, "LegendItem.property.title.alignment.description"), PreviewProperty.CATEGORY_LEGEND_PROPERTY) .setValue(value); break; } case LegendProperty.DESCRIPTION_IS_DISPLAYING: { previewProperty = PreviewProperty.createProperty( this, propertyString, Boolean.class, NbBundle.getMessage( AbstractLegendItemBuilder.class, "LegendItem.property.description.isDisplaying.displayName"), NbBundle.getMessage( AbstractLegendItemBuilder.class, "LegendItem.property.description.isDisplaying.description"), PreviewProperty.CATEGORY_LEGEND_PROPERTY) .setValue(value); break; } case LegendProperty.DESCRIPTION: { previewProperty = PreviewProperty.createProperty( this, propertyString, String.class, NbBundle.getMessage( AbstractLegendItemBuilder.class, "LegendItem.property.description.displayName"), NbBundle.getMessage( AbstractLegendItemBuilder.class, "LegendItem.property.description.description"), PreviewProperty.CATEGORY_LEGEND_PROPERTY) .setValue(value); break; } case LegendProperty.DESCRIPTION_FONT: { previewProperty = PreviewProperty.createProperty( this, propertyString, Font.class, NbBundle.getMessage( AbstractLegendItemBuilder.class, "LegendItem.property.description.font.displayName"), NbBundle.getMessage( AbstractLegendItemBuilder.class, "LegendItem.property.description.font.description"), PreviewProperty.CATEGORY_LEGEND_PROPERTY) .setValue(value); break; } case LegendProperty.DESCRIPTION_FONT_COLOR: { previewProperty = PreviewProperty.createProperty( this, propertyString, Color.class, NbBundle.getMessage( AbstractLegendItemBuilder.class, "LegendItem.property.description.font.color.displayName"), NbBundle.getMessage( AbstractLegendItemBuilder.class, "LegendItem.property.description.font.color.description"), PreviewProperty.CATEGORY_LEGEND_PROPERTY) .setValue(value); break; } case LegendProperty.DESCRIPTION_ALIGNMENT: { previewProperty = PreviewProperty.createProperty( this, propertyString, Alignment.class, NbBundle.getMessage( AbstractLegendItemBuilder.class, "LegendItem.property.description.alignment.displayName"), NbBundle.getMessage( AbstractLegendItemBuilder.class, "LegendItem.property.description.alignment.description"), PreviewProperty.CATEGORY_LEGEND_PROPERTY) .setValue(value); } } return previewProperty; }
@Test public void testPNG() { try { // Init a project - and therefore a workspace ProjectController pc = Lookup.getDefault().lookup(ProjectController.class); pc.newProject(); Workspace workspace = pc.getCurrentWorkspace(); // Append container to graph structure String sample = "/org/gephi/desktop/welcome/samples/Les Miserables.gexf"; final InputStream stream = WelcomeTopComponent.class.getResourceAsStream(sample); ImportController importController = Lookup.getDefault().lookup(ImportController.class); FileImporter fileImporter = importController.getFileImporter(".gexf"); Container container = importController.importFile(stream, fileImporter); importController.process(container, new DefaultProcessor(), workspace); // Add self loop GraphController graphController = Lookup.getDefault().lookup(GraphController.class); Graph graph = graphController.getModel().getGraph(); Node node = graph.getNode(12); System.out.println("Self loop " + node.getNodeData().getLabel()); graph.addEdge(graphController.getModel().factory().newEdge(node, node, 31, true)); // Set label edges for (Edge edge : graphController.getModel().getGraph().getEdges()) { edge.getEdgeData().setLabel("Label test"); } // svg document // attribute ??? AttributeController attributeController = Lookup.getDefault().lookup(AttributeController.class); AttributeModel attributeModel = null; // preview PreviewController previewController = Lookup.getDefault().lookup(PreviewController.class); PreviewModel previewModel = previewController.getModel(workspace); PreviewProperties previewProperties = previewModel.getProperties(); previewController.refreshPreview(workspace); previewModel.getProperties().putValue("width", 1000); previewModel.getProperties().putValue("height", 1000); ProcessingTarget target = (ProcessingTarget) previewController.getRenderTarget(RenderTarget.PROCESSING_TARGET, workspace); previewProperties.putValue(LegendModel.LEGEND_PROPERTIES, new LegendModel(workspace)); LegendModel legendManager = previewProperties.getValue(LegendModel.LEGEND_PROPERTIES); Integer itemIndex = legendManager.getCurrentIndex(); // creating item Item item = addGroupsItem(itemIndex, graph, attributeModel); // Item item = addTextItem(itemIndex, graph, attributeModel); // add item LegendController.getInstance().addItemToLegendModel(workspace, item); // render previewController.refreshPreview(workspace); previewController.render(target); File fileToSave = new File("/Volumes/edubecks/edubecks/Untitled.png"); OutputStream fos = new FileOutputStream(fileToSave); Writer writer = new OutputStreamWriter(fos, "UTF-8"); // // saving // int width = 1000; // int height = 1000; // PGraphicsJava2D pg2 = (PGraphicsJava2D) target.getGraphics(); // BufferedImage img = new BufferedImage(width, height, // BufferedImage.TYPE_INT_ARGB); // // System.out.println("@Var: pg2.pixels: "+pg2.pixels); // img.setRGB(0, 0, width, height, pg2.pixels, 0, width); // ImageIO.write(img, "png", fileToSave); // stream.close(); PNGExporter pngExporter = new PNGExporter(); // pngExporter.setHeight(2000); // pngExporter.setWidth(2000); pngExporter.setWorkspace(workspace); pngExporter.setOutputStream(fos); pngExporter.execute(); } catch (Exception e) { Exceptions.printStackTrace(e); } }