Пример #1
0
  public void updateLegend(PlugInContext context, I18NPlug iPlug) {
    Vector<LegendElement> tempItems = new Vector<>(10, 5);
    boolean showLine;
    boolean showFill;
    if (iPlug != null && legendName == null) {
      legendName = iPlug.get("JumpPrinter.Furniture.Legend");
    }
    this.iPlug = iPlug;
    if (legendItems != null) {
      for (int i = 0; i < legendItems.size(); i++) {
        tempItems.addElement(legendItems.elementAt(i));
      }
    }
    legendItems = new Vector<LegendElement>(10, 5);
    java.util.List layerCollection =
        context.getLayerViewPanel().getLayerManager().getVisibleLayers(true);

    Iterator i = layerCollection.iterator();
    int count = 0;
    while (i.hasNext()) {
      Layer layer = (Layer) i.next();
      String name = layer.getName();
      String desc = layer.getDescription();
      if (debug) {
        System.out.println("layer " + count + ":" + name + "," + desc);
      }
      BasicStyle basicStyle = layer.getBasicStyle();
      VertexStyle vertexStyle = layer.getVertexStyle();
      Collection themeStyles = null;

      ColorThemingStyle themeStyle = (ColorThemingStyle) layer.getStyle(ColorThemingStyle.class);
      if (debug) {
        System.out.println("       Theming enabled: " + themeStyle.isEnabled());
      }
      if (themeStyle.isEnabled()) {
        Map themeMap = themeStyle.getAttributeValueToBasicStyleMap();
        if (debug) {
          System.out.println("Map:" + themeMap.toString());
        }
        themeStyles = themeMap.values();
      }
      int alpha = basicStyle.getAlpha();
      Color lineColor = basicStyle.getLineColor();
      lineColor = new Color(lineColor.getRed(), lineColor.getGreen(), lineColor.getBlue(), alpha);
      showLine = true;
      if (!basicStyle.isRenderingLine()) {
        showLine = false;
      }

      Color fillColor = basicStyle.getFillColor();
      fillColor = new Color(fillColor.getRed(), fillColor.getGreen(), fillColor.getBlue(), alpha);
      showFill = true;

      if (!basicStyle.isRenderingFill()) {
        showFill = false;
      }

      Stroke lineStroke = basicStyle.getLineStroke();
      Paint fillPattern = basicStyle.getFillPattern();
      if (!basicStyle.isRenderingFillPattern()) {
        fillPattern = null;
      }

      // System.out.println("        LineColor: "+basicStyle.getLineColor()+"
      // FillColor:"+basicStyle.getFillColor());
      // create new legend item, include by default
      LegendElement legendElement =
          new LegendElement(
              true,
              name,
              lineColor,
              lineStroke,
              fillColor,
              fillPattern,
              themeStyles,
              null,
              vertexStyle,
              showLine,
              showFill);

      // set include on existing items
      for (int k = 0; k < tempItems.size(); k++) {
        LegendElement anitem = tempItems.elementAt(k);
        if (anitem.name.equals(legendElement.name)) {
          legendElement.include = anitem.include;
        }
      }
      legendItems.addElement(legendElement);
      if (debug) {
        System.out.println(legendElement.toString());
      }
      count++;
    }
  }