package org.freeplane.plugin.script.proxy; import java.awt.Color; import org.freeplane.core.util.ColorUtils; import org.freeplane.features.cloud.CloudController; import org.freeplane.features.cloud.CloudModel; import org.freeplane.features.cloud.mindmapmode.MCloudController; import org.freeplane.features.map.NodeModel; import org.freeplane.plugin.script.proxy.Proxy.Cloud; public class CloudProxy implements Cloud { private final NodeModel node; public CloudProxy(NodeProxy nodeProxy) { this.node = nodeProxy.getDelegate(); } @Override public boolean getEnabled() { return getCloudModel() != null; } @Override public void setEnabled(boolean enable) { getCloudController().setCloud(node, enable); } @Override public String getShape() { final CloudModel cloudModel = getCloudModel(); return cloudModel == null ? null : cloudModel.getShape().name(); } @Override public void setShape(String shape) { if (!handleArgumentIfNull(shape)) { getCloudController().setShape(node, CloudModel.Shape.valueOf(shape)); } } @Override public Color getColor() { final CloudModel cloudModel = getCloudModel(); return cloudModel == null ? null : cloudModel.getColor(); } @Override public void setColor(Color color) { if (!handleArgumentIfNull(color)) { getCloudController().setColor(node, color); } } @Override public String getColorCode() { final Color color = getColor(); return color == null ? null : ColorUtils.colorToString(color); } @Override public void setColorCode(String rgbString) { setColor(ColorUtils.stringToColor(rgbString)); } private CloudModel getCloudModel() { return CloudModel.getModel(node); } private MCloudController getCloudController() { return (MCloudController) CloudController.getController(); } private boolean handleArgumentIfNull(Object arg) { if (arg == null) { if (getEnabled()) setEnabled(false); return true; } return false; } }