Package org.freeplane.plugin.script.proxy

Source Code of org.freeplane.plugin.script.proxy.MapProxy

package org.freeplane.plugin.script.proxy;

import groovy.lang.Closure;

import java.awt.Color;
import java.io.File;
import java.util.Map.Entry;

import org.freeplane.core.resources.ResourceController;
import org.freeplane.core.util.ColorUtils;
import org.freeplane.features.filter.Filter;
import org.freeplane.features.filter.FilterController;
import org.freeplane.features.map.MapModel;
import org.freeplane.features.map.NodeModel;
import org.freeplane.features.mode.Controller;
import org.freeplane.features.styles.MapStyle;
import org.freeplane.features.styles.MapStyleModel;
import org.freeplane.features.ui.IMapViewManager;
import org.freeplane.plugin.script.ScriptContext;
import org.freeplane.plugin.script.proxy.Proxy.Map;
import org.freeplane.plugin.script.proxy.Proxy.Node;

public class MapProxy extends AbstractProxy<MapModel> implements Map {
  public MapProxy(final MapModel map, final ScriptContext scriptContext) {
    super(map, scriptContext);
  }

  // MapRO: R
  public Node node(final String id) {
    final NodeModel node = getDelegate().getNodeForID(id);
    return node != null ? new NodeProxy(node, getScriptContext()) : null;
  }

  // MapRO: R
  public Node getRoot() {
    final NodeModel rootNode = getDelegate().getRootNode();
    return new NodeProxy(rootNode, getScriptContext());
  }

  @Deprecated
  public Node getRootNode() {
    return getRoot();
  }

  // MapRO: R
  public File getFile() {
    return getDelegate().getFile();
  }

  // MapRO: R
  public String getName() {
    final IMapViewManager mapViewManager = getMapViewManager();
    for (Entry<String, MapModel> map : mapViewManager.getMaps().entrySet()) {
      if (map.getValue().equals(getDelegate()))
        return map.getKey();
    }
    return null;
  }

  // MapRO: R
  public boolean isSaved() {
    return getDelegate().isSaved();
  }

    // MapRO: R
    public Color getBackgroundColor() {
        // see MapBackgroundColorAction
        final MapStyle mapStyle = (MapStyle) Controller.getCurrentModeController().getExtension(MapStyle.class);
        final MapStyleModel model = (MapStyleModel) mapStyle.getMapHook();
        if (model != null) {
            return model.getBackgroundColor();
        }
        else {
            final String colorPropertyString = ResourceController.getResourceController().getProperty(
                MapStyle.RESOURCES_BACKGROUND_COLOR);
            final Color defaultBgColor = ColorUtils.stringToColor(colorPropertyString);
            return defaultBgColor;
        }
    }

    // MapRO: R
    public String getBackgroundColorCode() {
        return ColorUtils.colorToString(getBackgroundColor());
    }

  // Map: R/W
  public boolean close(boolean force, boolean allowInteraction) {
    if (!getDelegate().isSaved() && !force && !allowInteraction)
      throw new RuntimeException("will not close an unsaved map without being told so");
    final IMapViewManager mapViewManager = getMapViewManager();
    changeToThisMap(mapViewManager);
    return mapViewManager.close(force);
  }

  private void changeToThisMap(final IMapViewManager mapViewManager) {
    String mapKey = findMapViewKey(mapViewManager);
    if (mapKey == null)
      throw new RuntimeException("map " + getDelegate() + " does not seem to be opened");
    mapViewManager.changeToMapView(mapKey);
  }

  private IMapViewManager getMapViewManager() {
    return getModeController().getController().getMapViewManager();
  }

  private String findMapViewKey(final IMapViewManager mapViewManager) {
    for (Entry<String, MapModel> entry : mapViewManager.getMaps().entrySet()) {
      if (entry.getValue().equals(getDelegate())) {
        return entry.getKey();
      }
    }
    return null;
  }

  // Map: R/W
  public boolean save(boolean allowInteraction) {
    if (!getDelegate().isSaved() && getDelegate().getURL() == null && !allowInteraction)
      throw new RuntimeException("no url set for map " + getDelegate());
    changeToThisMap(getMapViewManager());
    return getModeController().save();
  }

  // Map: R/W
  public void setName(final String title) {
    changeToThisMap(getMapViewManager());
    Controller.getCurrentController().getMapViewManager().getMapViewComponent().setName(title);
  }

  // Map: R/W
  public void setSaved(final boolean isSaved) {
    Controller.getCurrentModeController().getMapController().setSaved(getDelegate(), isSaved);
  }

    // Map: R/W
    public void setBackgroundColor(Color color) {
        final MapStyle mapStyle = (MapStyle) Controller.getCurrentModeController().getExtension(MapStyle.class);
        final MapStyleModel model = (MapStyleModel) mapStyle.getMapHook();
        mapStyle.setBackgroundColor(model, color);
    }

    // Map: R/W
    public void setBackgroundColorCode(String rgbString) {
        setBackgroundColor(ColorUtils.stringToColor(rgbString));
    }

  // Map: R/W
  public void setFilter(final Closure<Boolean> closure) {
    final FilterController filterController = FilterController.getCurrentFilterController();
    if (closure == null) {
      filterController.applyNoFiltering();
    }
    else {
      final Filter filter = new Filter(ProxyUtils.createCondition(closure, getScriptContext()), false, false,
          true);
      filterController.applyFilter(filter, getDelegate(), true);
    }
  }

  // Map: R/W
  public void filter(final Closure<Boolean> closure) {
    setFilter(closure);
  }

  // Map: R/W
  public void setFilter(final boolean showAncestors, final boolean showDescendants, final Closure<Boolean> closure) {
    final FilterController filterController = FilterController.getCurrentFilterController();
    if (closure == null) {
      filterController.applyNoFiltering();
    }
    else {
      final Filter filter = new Filter(ProxyUtils.createCondition(closure, getScriptContext()), showAncestors,
          showDescendants, true);
      filterController.applyFilter(filter, getDelegate(), true);
    }
  }
 
  // Map: R/W
  public void filter(final boolean showAncestors, final boolean showDescendants, final Closure<Boolean> closure) {
    setFilter(showAncestors, showDescendants, closure);
  }

  // Map: R/W
  public void redoFilter() {
    FilterController.getCurrentFilterController().redo();
    }

  // Map: R/W
  public void undoFilter() {
    FilterController.getCurrentFilterController().undo();
    }

    // Map: RO
    public Proxy.Properties getStorage() {
        return new PropertiesProxy(getDelegate(), getScriptContext());
    }
}
TOP

Related Classes of org.freeplane.plugin.script.proxy.MapProxy

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.