context);
}
diff --git a/org.flowerplatform.core/src/org/flowerplatform/core/node/controller/ResourceTypeDynamicCategoryProvider.java b/org.flowerplatform.core/src/org/flowerplatform/core/node/controller/ResourceTypeDynamicCategoryProvider.java
index 828069ff..22de005f 100644
--- a/org.flowerplatform.core/src/org/flowerplatform/core/node/controller/ResourceTypeDynamicCategoryProvider.java
+++ b/org.flowerplatform.core/src/org/flowerplatform/core/node/controller/ResourceTypeDynamicCategoryProvider.java
@@ -15,7 +15,7 @@
*
*
* This way we can easily implement plugins that are "persistence providers" for a certain type of resource. E.g. the
- * FreePlane plugin would register various controllers ({@link IChildrenProvider}, {@link IPropertiesProvider}, etc.) directly
+ * FreePlane plugin would register various controllers ({@link ChildrenProvider}, {@link PropertiesProvider}, etc.) directly
* on the category "category.resource.mm". Each node for a "mm" resource will belong to this category, no matter its node type
* or the static categories assigned to the node type.
*
diff --git a/org.flowerplatform.core/src/org/flowerplatform/core/node/controller/TypeDescriptorRegistryDebugControllers.java b/org.flowerplatform.core/src/org/flowerplatform/core/node/controller/TypeDescriptorRegistryDebugControllers.java
index 788215eb..87e61da5 100644
--- a/org.flowerplatform.core/src/org/flowerplatform/core/node/controller/TypeDescriptorRegistryDebugControllers.java
+++ b/org.flowerplatform.core/src/org/flowerplatform/core/node/controller/TypeDescriptorRegistryDebugControllers.java
@@ -18,7 +18,6 @@
import org.flowerplatform.core.node.remote.ServiceContext;
import org.flowerplatform.resources.ResourcesPlugin;
import org.flowerplatform.util.controller.AbstractController;
-import org.flowerplatform.util.controller.IController;
import org.flowerplatform.util.controller.TypeDescriptor;
import org.flowerplatform.util.controller.TypeDescriptorDebugWrapper;
@@ -41,228 +40,56 @@ public class TypeDescriptorRegistryDebugControllers {
private final String CONTROLLER_SINGLE = DEBUG + "JavaControllerSingle";
private final String CONTROLLER_ADDITIVE = DEBUG + "JavaControllerAdditive";
- class DebugController extends AbstractController implements IChildrenProvider {
-
- @Override
- public boolean hasChildren(Node node, ServiceContext context) {
- return true;
- }
-
- @Override
- public List getChildren(Node node, ServiceContext context) {
- return Collections.singletonList(new Node(TYPES, DEBUG, null, null));
- }
- }
-
- class TypesDebugController extends AbstractController implements IChildrenProvider {
-
- @Override
- public boolean hasChildren(Node node, ServiceContext context) {
- return true;
- }
-
- @Override
- public List getChildren(Node node, ServiceContext context) {
- return Arrays.asList(new Node(TYPES_FLEX, TYPES, null, null), new Node(TYPES_JAVA, TYPES, null, null));
- }
- }
-
- class FlexTypesDebugController extends AbstractController implements IChildrenProvider {
-
- @Override
- public boolean hasChildren(Node node, ServiceContext context) {
- return true;
- }
-
- @Override
- public List getChildren(Node node, ServiceContext context) {
- // should not be called from client
- return Collections.emptyList();
- }
- }
-
- class JavaTypesDebugController extends AbstractController implements IChildrenProvider {
-
- @Override
- public boolean hasChildren(Node node, ServiceContext context) {
- return true;
- }
+ public void registerControllers() {
- @Override
- public List getChildren(Node node, ServiceContext context) {
- List children = new ArrayList();
- List types = CorePlugin.getInstance().getNodeTypeDescriptorRegistry().getRegisteredTypes();
- Collections.sort(types); // show them in alphabetical order for better readability
- for (String type : types) {
- children.add(new Node(TYPE, TYPES_JAVA, type, null));
- }
- return children;
- }
- }
-
- class TypeDebugController extends AbstractController implements IChildrenProvider, IPropertiesProvider {
-
- @Override
- public boolean hasChildren(Node node, ServiceContext context) {
- return true;
- }
+ ///////////////////////////////////////////////////
+ // add types
+ ///////////////////////////////////////////////////
- @Override
- public List getChildren(Node node, ServiceContext context) {
- String type = node.getIdWithinResource();
- TypeDescriptor descriptor = CorePlugin.getInstance().getNodeTypeDescriptorRegistry().getExpectedTypeDescriptor(type);
- List children = new ArrayList();
-
- // get categories
- for (String category : descriptor.getCategories()) {
- children.add(new Node(CATEGORY, type, category, null));
- }
-
- TypeDescriptorDebugWrapper wrapper = new TypeDescriptorDebugWrapper(descriptor);
+ CorePlugin.getInstance().getNodeTypeDescriptorRegistry().getOrCreateTypeDescriptor(DEBUG)
+ .addAdditiveController(CHILDREN_PROVIDER, new ChildrenProvider() {
- // get single controllers keys
- for (String singleControllersKey : wrapper.getSingleControllersKeys()) {
- children.add(new Node(CONTROLLER_KEY_SINGLE, type, singleControllersKey, null));
+ @Override
+ public boolean hasChildren(Node node, ServiceContext context) {
+ return true;
}
- // get additive controllers keys
- for (String additiveControllersKey : wrapper.getAdditiveControllersKeys()) {
- children.add(new Node(CONTROLLER_KEY_ADDITIVE, type, additiveControllersKey, null));
+ @Override
+ public List getChildren(Node node, ServiceContext context) {
+ return Collections.singletonList(new Node(TYPES, DEBUG, null, null));
}
-
- return children;
- }
-
- @Override
- public void populateWithProperties(Node node, ServiceContext context) {
- node.getProperties().put(NAME, node.getIdWithinResource());
- node.getProperties().put(ICONS, ResourcesPlugin.getInstance().getResourceUrl("/images/mindmap/icons/idea.png"));
- }
- }
-
- class SingleControllerKeyDebugController extends AbstractController implements IChildrenProvider, IPropertiesProvider {
-
- @Override
- public boolean hasChildren(Node node, ServiceContext context) {
- return true;
- }
+ });
- @Override
- public List getChildren(Node node, ServiceContext context) {
- // parent: CONTROLLER_KEY_SINGLE|type|controllerKey
- List children = new ArrayList();
- TypeDescriptor descriptor = CorePlugin.getInstance().getNodeTypeDescriptorRegistry().getExpectedTypeDescriptor(node.getResource());
- TypeDescriptorDebugWrapper wrapper = new TypeDescriptorDebugWrapper(descriptor);
-
- Object cachedController = wrapper.getCachedSingleController(node.getIdWithinResource());
- Object selfController = wrapper.getSelfSingleController(node.getIdWithinResource());
-
- // add cached controller
- if (cachedController != null) {
- Node child = TypeDescriptorRegistryDebugControllers.this.createControllerNode(cachedController, CONTROLLER_SINGLE, node.getFullNodeId());
- String icons = (String) child.getOrPopulateProperties().get(ICONS);
- if (cachedController != selfController) {
- // override
- icons += ICONS_SEPARATOR + ResourcesPlugin.getInstance().getResourceUrl("/images/mindmap/icons/attach.png");
- child.getOrPopulateProperties().put(ICONS, icons);
- }
- children.add(child);
- }
+ CorePlugin.getInstance().getNodeTypeDescriptorRegistry().getOrCreateTypeDescriptor(TYPES)
+ .addAdditiveController(PROPERTIES_PROVIDER, new ConstantValuePropertyProvider(NAME, "Node Types"))
+ .addAdditiveController(CHILDREN_PROVIDER, new ChildrenProvider() {
- // add self controller - only if different from cached
- if (selfController != null && selfController != cachedController) {
- Node child = TypeDescriptorRegistryDebugControllers.this.createControllerNode(selfController, CONTROLLER_SINGLE, node.getFullNodeId());
- // deleted
- child.getOrPopulateProperties().put(ICONS, ResourcesPlugin.getInstance().getResourceUrl("/images/mindmap/icons/button-cancel.png"));
- children.add(child);
+ @Override
+ public boolean hasChildren(Node node, ServiceContext context) {
+ return true;
}
- return children;
- }
-
- @Override
- public void populateWithProperties(Node node, ServiceContext context) {
- // node: CONTROLLER_KEY_SINGLE|descriptorType|controllerKey
- node.getProperties().put(NAME, node.getIdWithinResource());
- String icons = ResourcesPlugin.getInstance().getResourceUrl("/images/mindmap/icons/full-1.png");
- TypeDescriptorDebugWrapper wrapper = new TypeDescriptorDebugWrapper(CorePlugin.getInstance().getNodeTypeDescriptorRegistry().getExpectedTypeDescriptor(node.getResource()));
- if (wrapper.isCachedSingleController(node.getIdWithinResource())) {
- icons += ICONS_SEPARATOR + ResourcesPlugin.getInstance().getResourceUrl("/images/mindmap/icons/flag.png");
+ @Override
+ public List getChildren(Node node, ServiceContext context) {
+ return Arrays.asList(new Node(TYPES_FLEX, TYPES, null, null), new Node(TYPES_JAVA, TYPES, null, null));
}
- node.getProperties().put(ICONS, icons);
- }
- }
-
- class AdditiveControllerKeyDebugController extends AbstractController implements IChildrenProvider, IPropertiesProvider {
-
- @Override
- public boolean hasChildren(Node node, ServiceContext context) {
- return true;
- }
+ });
- @Override
- public List getChildren(Node node, ServiceContext context) {
- // parent: CONTROLLER_KEY_ADDITIVE|type|controllerKey
- List children = new ArrayList();
- TypeDescriptor descriptor = CorePlugin.getInstance().getNodeTypeDescriptorRegistry().getExpectedTypeDescriptor(node.getResource());
- TypeDescriptorDebugWrapper wrapper = new TypeDescriptorDebugWrapper(descriptor);
-
- List extends IController> cachedControllers = wrapper.getCachedAdditiveControllers(node.getIdWithinResource());
- List extends IController> selfControllers = wrapper.getSelfAdditiveControllers(node.getIdWithinResource());
+ CorePlugin.getInstance().getNodeTypeDescriptorRegistry().getOrCreateTypeDescriptor(TYPES_FLEX)
+ .addAdditiveController(PROPERTIES_PROVIDER, new ConstantValuePropertyProvider(NAME, "Flex"))
+ .addAdditiveController(CHILDREN_PROVIDER, new ChildrenProvider() {
- // add controllers
- for (IController cachedController : cachedControllers) {
- Node child = TypeDescriptorRegistryDebugControllers.this.createControllerNode(cachedController, CONTROLLER_ADDITIVE, node.getFullNodeId());
- String icons = (String) child.getOrPopulateProperties().get(ICONS);
- if (!selfControllers.contains(cachedController)) {
- // contributed
- icons += ICONS_SEPARATOR + ResourcesPlugin.getInstance().getResourceUrl("/images/mindmap/icons/attach.png");
- child.getOrPopulateProperties().put(ICONS, icons);
- }
- children.add(child);
+ @Override
+ public boolean hasChildren(Node node, ServiceContext context) {
+ return true;
}
- return children;
- }
-
- @Override
- public void populateWithProperties(Node node, ServiceContext context) {
- // node: CONTROLLER_KEY_ADDITIVE|descriptorType|controllerKey
- node.getProperties().put(NAME, node.getIdWithinResource());
- String icons = ResourcesPlugin.getInstance().getResourceUrl("/images/mindmap/icons/positive.png");
- TypeDescriptorDebugWrapper wrapper = new TypeDescriptorDebugWrapper(CorePlugin.getInstance().getNodeTypeDescriptorRegistry().getExpectedTypeDescriptor(node.getResource()));
- if (wrapper.isCachedAdditiveController(node.getIdWithinResource())) {
- icons += ICONS_SEPARATOR + ResourcesPlugin.getInstance().getResourceUrl("/images/mindmap/icons/flag.png");
+ @Override
+ public List getChildren(Node node, ServiceContext context) {
+ // should not be called from client
+ return Collections.emptyList();
}
- node.getProperties().put(ICONS, icons);
- }
- }
-
- class CategoryDebugController extends AbstractController implements IPropertiesProvider {
-
- @Override
- public void populateWithProperties(Node node, ServiceContext context) {
- node.getProperties().put(NAME, node.getIdWithinResource());
- node.getProperties().put(ICONS, ResourcesPlugin.getInstance().getResourceUrl("/images/mindmap/icons/folder.png"));
- }
- }
-
- public void registerControllers() {
-
- ///////////////////////////////////////////////////
- // add types
- ///////////////////////////////////////////////////
-
- CorePlugin.getInstance().getNodeTypeDescriptorRegistry().getOrCreateTypeDescriptor(DEBUG)
- .addAdditiveController(CHILDREN_PROVIDER, new DebugController());
-
- CorePlugin.getInstance().getNodeTypeDescriptorRegistry().getOrCreateTypeDescriptor(TYPES)
- .addAdditiveController(PROPERTIES_PROVIDER, new ConstantValuePropertyProvider(NAME, "Node Types"))
- .addAdditiveController(CHILDREN_PROVIDER, new TypesDebugController());
-
- CorePlugin.getInstance().getNodeTypeDescriptorRegistry().getOrCreateTypeDescriptor(TYPES_FLEX)
- .addAdditiveController(PROPERTIES_PROVIDER, new ConstantValuePropertyProvider(NAME, "Flex"))
- .addAdditiveController(CHILDREN_PROVIDER, new FlexTypesDebugController());
+ });
///////////////////////////////////////////////////
// add types to "Java Types"
@@ -270,37 +97,193 @@ public void registerControllers() {
CorePlugin.getInstance().getNodeTypeDescriptorRegistry().getOrCreateTypeDescriptor(TYPES_JAVA)
.addAdditiveController(PROPERTIES_PROVIDER, new ConstantValuePropertyProvider(NAME, "Java"))
- .addAdditiveController(CHILDREN_PROVIDER, new JavaTypesDebugController());
+ .addAdditiveController(CHILDREN_PROVIDER, new ChildrenProvider() {
+
+ @Override
+ public boolean hasChildren(Node node, ServiceContext context) {
+ return true;
+ }
+
+ @Override
+ public List getChildren(Node node, ServiceContext context) {
+ List children = new ArrayList();
+ List types = CorePlugin.getInstance().getNodeTypeDescriptorRegistry().getRegisteredTypes();
+ Collections.sort(types); // show them in alphabetical order for better readability
+ for (String type : types) {
+ children.add(new Node(TYPE, TYPES_JAVA, type, null));
+ }
+ return children;
+ }
+ });
///////////////////////////////////////////////////
// add categories and controller keys to type
///////////////////////////////////////////////////
- TypeDebugController typeDebugController = new TypeDebugController();
CorePlugin.getInstance().getNodeTypeDescriptorRegistry().getOrCreateTypeDescriptor(TYPE)
- .addAdditiveController(CHILDREN_PROVIDER, typeDebugController)
- .addAdditiveController(PROPERTIES_PROVIDER, typeDebugController);
+ .addAdditiveController(PROPERTIES_PROVIDER, new PropertiesProvider() {
+
+ @Override
+ public void populateWithProperties(Node node, ServiceContext context) {
+ node.getProperties().put(NAME, node.getIdWithinResource());
+ node.getProperties().put(ICONS, ResourcesPlugin.getInstance().getResourceUrl("/images/mindmap/icons/idea.png"));
+ }
+ })
+ .addAdditiveController(CHILDREN_PROVIDER, new ChildrenProvider() {
+
+ @Override
+ public boolean hasChildren(Node node, ServiceContext context) {
+ return true;
+ }
+
+ @Override
+ public List getChildren(Node node, ServiceContext context) {
+ String type = node.getIdWithinResource();
+ TypeDescriptor descriptor = CorePlugin.getInstance().getNodeTypeDescriptorRegistry().getExpectedTypeDescriptor(type);
+ List children = new ArrayList();
+
+ // get categories
+ for (String category : descriptor.getCategories()) {
+ children.add(new Node(CATEGORY, type, category, null));
+ }
+
+ TypeDescriptorDebugWrapper wrapper = new TypeDescriptorDebugWrapper(descriptor);
+
+ // get single controllers keys
+ for (String singleControllersKey : wrapper.getSingleControllersKeys()) {
+ children.add(new Node(CONTROLLER_KEY_SINGLE, type, singleControllersKey, null));
+ }
+
+ // get additive controllers keys
+ for (String additiveControllersKey : wrapper.getAdditiveControllersKeys()) {
+ children.add(new Node(CONTROLLER_KEY_ADDITIVE, type, additiveControllersKey, null));
+ }
+
+ return children;
+ }
+ });
///////////////////////////////////////////////////
// set category name and icons
///////////////////////////////////////////////////
CorePlugin.getInstance().getNodeTypeDescriptorRegistry().getOrCreateTypeDescriptor(CATEGORY)
- .addAdditiveController(PROPERTIES_PROVIDER, new CategoryDebugController());
+ .addAdditiveController(PROPERTIES_PROVIDER, new PropertiesProvider() {
+
+ @Override
+ public void populateWithProperties(Node node, ServiceContext context) {
+ node.getProperties().put(NAME, node.getIdWithinResource());
+ node.getProperties().put(ICONS, ResourcesPlugin.getInstance().getResourceUrl("/images/mindmap/icons/folder.png"));
+ }
+ });
///////////////////////////////////////////////////
// add controllers to controller key
///////////////////////////////////////////////////
- SingleControllerKeyDebugController singleControllerKeyDebugController = new SingleControllerKeyDebugController();
CorePlugin.getInstance().getNodeTypeDescriptorRegistry().getOrCreateTypeDescriptor(CONTROLLER_KEY_SINGLE)
- .addAdditiveController(CHILDREN_PROVIDER, singleControllerKeyDebugController)
- .addAdditiveController(PROPERTIES_PROVIDER, singleControllerKeyDebugController);
+ .addAdditiveController(PROPERTIES_PROVIDER, new PropertiesProvider() {
+
+ @Override
+ public void populateWithProperties(Node node, ServiceContext context) {
+ // node: CONTROLLER_KEY_SINGLE|descriptorType|controllerKey
+ node.getProperties().put(NAME, node.getIdWithinResource());
+ String icons = ResourcesPlugin.getInstance().getResourceUrl("/images/mindmap/icons/full-1.png");
+ TypeDescriptorDebugWrapper wrapper = new TypeDescriptorDebugWrapper(CorePlugin.getInstance().getNodeTypeDescriptorRegistry().getExpectedTypeDescriptor(node.getResource()));
+ if (wrapper.isCachedSingleController(node.getIdWithinResource())) {
+ icons += ICONS_SEPARATOR + ResourcesPlugin.getInstance().getResourceUrl("/images/mindmap/icons/flag.png");
+ }
+ node.getProperties().put(ICONS, icons);
+ }
+ })
+ .addAdditiveController(CHILDREN_PROVIDER, new ChildrenProvider() {
+
+ @Override
+ public boolean hasChildren(Node node, ServiceContext context) {
+ return true;
+ }
+
+ @Override
+ public List getChildren(Node node, ServiceContext context) {
+ // parent: CONTROLLER_KEY_SINGLE|type|controllerKey
+ List children = new ArrayList();
+ TypeDescriptor descriptor = CorePlugin.getInstance().getNodeTypeDescriptorRegistry().getExpectedTypeDescriptor(node.getResource());
+ TypeDescriptorDebugWrapper wrapper = new TypeDescriptorDebugWrapper(descriptor);
+
+ AbstractController cachedController = wrapper.getCachedSingleController(node.getIdWithinResource());
+ AbstractController selfController = wrapper.getSelfSingleController(node.getIdWithinResource());
+
+ // add cached controller
+ if (cachedController != null) {
+ Node child = TypeDescriptorRegistryDebugControllers.this.createControllerNode(cachedController, CONTROLLER_SINGLE, node.getFullNodeId());
+ String icons = (String) child.getOrPopulateProperties().get(ICONS);
+ if (cachedController != selfController) {
+ // override
+ icons += ICONS_SEPARATOR + ResourcesPlugin.getInstance().getResourceUrl("/images/mindmap/icons/attach.png");
+ child.getOrPopulateProperties().put(ICONS, icons);
+ }
+ children.add(child);
+ }
+
+ // add self controller - only if different from cached
+ if (selfController != null && selfController != cachedController) {
+ Node child = TypeDescriptorRegistryDebugControllers.this.createControllerNode(selfController, CONTROLLER_SINGLE, node.getFullNodeId());
+ // deleted
+ child.getOrPopulateProperties().put(ICONS, ResourcesPlugin.getInstance().getResourceUrl("/images/mindmap/icons/button-cancel.png"));
+ children.add(child);
+ }
+
+ return children;
+ }
+ });
- AdditiveControllerKeyDebugController additiveControllerKeyDebugController = new AdditiveControllerKeyDebugController();
CorePlugin.getInstance().getNodeTypeDescriptorRegistry().getOrCreateTypeDescriptor(CONTROLLER_KEY_ADDITIVE)
- .addAdditiveController(CHILDREN_PROVIDER, additiveControllerKeyDebugController)
- .addAdditiveController(PROPERTIES_PROVIDER, additiveControllerKeyDebugController);
+ .addAdditiveController(PROPERTIES_PROVIDER, new PropertiesProvider() {
+
+ @Override
+ public void populateWithProperties(Node node, ServiceContext context) {
+ // node: CONTROLLER_KEY_ADDITIVE|descriptorType|controllerKey
+ node.getProperties().put(NAME, node.getIdWithinResource());
+ String icons = ResourcesPlugin.getInstance().getResourceUrl("/images/mindmap/icons/positive.png");
+ TypeDescriptorDebugWrapper wrapper = new TypeDescriptorDebugWrapper(CorePlugin.getInstance().getNodeTypeDescriptorRegistry().getExpectedTypeDescriptor(node.getResource()));
+ if (wrapper.isCachedAdditiveController(node.getIdWithinResource())) {
+ icons += ICONS_SEPARATOR + ResourcesPlugin.getInstance().getResourceUrl("/images/mindmap/icons/flag.png");
+ }
+ node.getProperties().put(ICONS, icons);
+ }
+ })
+ .addAdditiveController(CHILDREN_PROVIDER, new ChildrenProvider() {
+
+ @Override
+ public boolean hasChildren(Node node, ServiceContext context) {
+ return true;
+ }
+
+ @Override
+ public List getChildren(Node node, ServiceContext context) {
+ // parent: CONTROLLER_KEY_ADDITIVE|type|controllerKey
+ List children = new ArrayList();
+ TypeDescriptor descriptor = CorePlugin.getInstance().getNodeTypeDescriptorRegistry().getExpectedTypeDescriptor(node.getResource());
+ TypeDescriptorDebugWrapper wrapper = new TypeDescriptorDebugWrapper(descriptor);
+
+ List extends AbstractController> cachedControllers = wrapper.getCachedAdditiveControllers(node.getIdWithinResource());
+ List extends AbstractController> selfControllers = wrapper.getSelfAdditiveControllers(node.getIdWithinResource());
+
+ // add controllers
+ for (AbstractController cachedController : cachedControllers) {
+ Node child = TypeDescriptorRegistryDebugControllers.this.createControllerNode(cachedController, CONTROLLER_ADDITIVE, node.getFullNodeId());
+ String icons = (String) child.getOrPopulateProperties().get(ICONS);
+ if (!selfControllers.contains(cachedController)) {
+ // contributed
+ icons += ICONS_SEPARATOR + ResourcesPlugin.getInstance().getResourceUrl("/images/mindmap/icons/attach.png");
+ child.getOrPopulateProperties().put(ICONS, icons);
+ }
+ children.add(child);
+ }
+
+ return children;
+ }
+ });
///////////////////////////////////////////////////
// controller descriptors
@@ -311,7 +294,7 @@ public void registerControllers() {
}
- private Node createControllerNode(Object controller, String type, String resource) {
+ private Node createControllerNode(AbstractController controller, String type, String resource) {
String id = controller.toString();
Node node = new Node(type, resource, id, null);
node.getOrPopulateProperties().put(NAME, id);
diff --git a/org.flowerplatform.core/src/org/flowerplatform/core/node/remote/Node.java b/org.flowerplatform.core/src/org/flowerplatform/core/node/remote/Node.java
index def5df90..ad1b3f2a 100644
--- a/org.flowerplatform.core/src/org/flowerplatform/core/node/remote/Node.java
+++ b/org.flowerplatform.core/src/org/flowerplatform/core/node/remote/Node.java
@@ -7,7 +7,7 @@
import org.flowerplatform.core.CorePlugin;
import org.flowerplatform.core.node.NodeService;
-import org.flowerplatform.core.node.controller.IPropertiesProvider;
+import org.flowerplatform.core.node.controller.PropertiesProvider;
import org.flowerplatform.util.Utils;
/**
@@ -94,7 +94,7 @@ public String getFullNodeId() {
}
/**
- * Should be used for writing values in the map. Probably by {@link IPropertiesProvider}.
+ * Should be used for writing values in the map. Probably by {@link PropertiesProvider}.
*
* @return The properties map (lazy initialized in here), without any other processing.
*/
@@ -113,7 +113,7 @@ public void setProperties(Map properties) {
* Populates the node (if not populated). Should be used for reading values from the map.
*
*
- * WARNING: shouldn't be used for writing values. E.g. if {@link IPropertiesProvider}'s try
+ * WARNING: shouldn't be used for writing values. E.g. if {@link PropertiesProvider}'s try
* to use this method, an infinite call loop will be created ({@link StackOverflowError}).
*
* @return The properties map (populated if not already populated).
diff --git a/org.flowerplatform.core/src/org/flowerplatform/core/node/resource/ResourceDebugControllers.java b/org.flowerplatform.core/src/org/flowerplatform/core/node/resource/ResourceDebugControllers.java
index 87d953d2..be87cef5 100644
--- a/org.flowerplatform.core/src/org/flowerplatform/core/node/resource/ResourceDebugControllers.java
+++ b/org.flowerplatform.core/src/org/flowerplatform/core/node/resource/ResourceDebugControllers.java
@@ -27,13 +27,12 @@
import org.flowerplatform.core.CoreConstants;
import org.flowerplatform.core.CorePlugin;
import org.flowerplatform.core.node.NodeService;
-import org.flowerplatform.core.node.controller.IChildrenProvider;
-import org.flowerplatform.core.node.controller.IPropertiesProvider;
+import org.flowerplatform.core.node.controller.ChildrenProvider;
+import org.flowerplatform.core.node.controller.PropertiesProvider;
import org.flowerplatform.core.node.remote.Node;
import org.flowerplatform.core.node.remote.PropertyDescriptor;
import org.flowerplatform.core.node.remote.ServiceContext;
import org.flowerplatform.util.UtilConstants;
-import org.flowerplatform.util.controller.AbstractController;
/**
* @author Mariana Gheorghe
@@ -52,199 +51,163 @@ public class ResourceDebugControllers {
private final String SESSION_CATEGORY = UtilConstants.CATEGORY_PREFIX + SESSION;
private final String RESOURCE_NODE_INFO_CATEGORY = UtilConstants.CATEGORY_PREFIX + RESOURCE_NODE_INFO;
- class RootDebugController extends AbstractController implements IChildrenProvider {
-
- @Override
- public boolean hasChildren(Node node, ServiceContext context) {
- return true;
- }
-
- @Override
- public List getChildren(Node node, ServiceContext context) {
- return Collections.singletonList(new Node(DEBUG, null, null, null));
- }
- }
-
- class DebugController extends AbstractController implements IPropertiesProvider, IChildrenProvider {
-
- @Override
- public boolean hasChildren(Node node, ServiceContext context) {
- return true;
- }
-
- @Override
- public List getChildren(Node node, ServiceContext context) {
- return Collections.singletonList(new Node(RESOURCES, DEBUG, null, null));
- }
+ public void registerControllers() {
- @Override
- public void populateWithProperties(Node node, ServiceContext context) {
- node.getProperties().put(CoreConstants.NAME, DEBUG);
- }
- }
-
- class ResourcesDebugController extends AbstractController implements IPropertiesProvider, IChildrenProvider {
-
- @Override
- public boolean hasChildren(Node node, ServiceContext context) {
- return true;
- }
+ // add _debug node to root
- @Override
- public List getChildren(Node node, ServiceContext context) {
- List children = new ArrayList();
+ CorePlugin.getInstance().getNodeTypeDescriptorRegistry().getOrCreateTypeDescriptor(CoreConstants.ROOT_TYPE)
+ .addAdditiveController(CoreConstants.CHILDREN_PROVIDER, new ChildrenProvider() {
- // sessions
- for (String sessionId : CorePlugin.getInstance().getResourceService().getSubscribedSessions()) {
- Node session = new Node(SESSION, node.getResource(), sessionId, null);
- children.add(session);
+ @Override
+ public boolean hasChildren(Node node, ServiceContext context) {
+ return true;
}
- // resources
- for (String resourceId : CorePlugin.getInstance().getResourceService().getResources()) {
- Node resource = new Node(RESOURCE_NODE_INFO, node.getResource(), resourceId.replace("|", "+"), null);
- children.add(resource);
+ @Override
+ public List getChildren(Node node, ServiceContext context) {
+ return Collections.singletonList(new Node(DEBUG, null, null, null));
}
-
- return children;
- }
-
- @Override
- public void populateWithProperties(Node node, ServiceContext context) {
- node.getProperties().put(CoreConstants.NAME, "Resources");
- }
- }
-
- class SessionCategoryDebugController extends AbstractController implements IPropertiesProvider {
+ }.setOrderIndexAs(10000));
- @Override
- public void populateWithProperties(Node node, ServiceContext context) {
- String sessionId = node.getIdWithinResource().split(" ")[0];
- node.getProperties().put(CoreConstants.NAME, "Session " + sessionId);
- node.getProperties().put("ip", CorePlugin.getInstance().getResourceService().getSessionProperty(sessionId, "ip"));
- context.add(CoreConstants.DONT_PROCESS_OTHER_CONTROLLERS, true);
- }
- }
-
- class SessionDebugController extends AbstractController implements IChildrenProvider {
-
- @Override
- public boolean hasChildren(Node node, ServiceContext context) {
- context.add(CoreConstants.DONT_PROCESS_OTHER_CONTROLLERS, true);
- return true;
- }
-
- @Override
- public List getChildren(Node node, ServiceContext context) {
- context.add(CoreConstants.DONT_PROCESS_OTHER_CONTROLLERS, true);
- List children = new ArrayList();
- String sessionId = node.getIdWithinResource().split(" ")[0];
- for (String resourceId : CorePlugin.getInstance().getResourceService().getResourcesSubscribedBySession(sessionId)) {
- Node resource = new Node(RESOURCE_NODE_INFO2, node.getResource(), resourceId.replace("|", "+"), null);
- children.add(resource);
+ CorePlugin.getInstance().getNodeTypeDescriptorRegistry().getOrCreateTypeDescriptor(DEBUG)
+ .addAdditiveController(CoreConstants.PROPERTIES_PROVIDER, new PropertiesProvider() {
+
+ @Override
+ public void populateWithProperties(Node node, ServiceContext context) {
+ node.getProperties().put(CoreConstants.NAME, DEBUG);
}
- return children;
- }
- }
-
- class ResourceNodeInfoCategoryDebugController extends AbstractController implements IPropertiesProvider {
-
- @Override
- public void populateWithProperties(Node node, ServiceContext context) {
- String resourceId = node.getIdWithinResource().replace("+", "|").split(" ")[0];
- node.getProperties().put(CoreConstants.NAME, "Resource " + resourceId);
- long timestamp = CorePlugin.getInstance().getResourceService().getUpdateRequestedTimestamp(resourceId);
- node.getProperties().put(CoreConstants.LAST_UPDATE_TIMESTAMP, timestamp);
- context.add(CoreConstants.DONT_PROCESS_OTHER_CONTROLLERS, true);
- }
- }
-
- class ResourceNodeInfoDebugController extends AbstractController implements IChildrenProvider {
-
- @Override
- public boolean hasChildren(Node node, ServiceContext context) {
- context.add(CoreConstants.DONT_PROCESS_OTHER_CONTROLLERS, true);
- return true;
- }
-
- @Override
- public List getChildren(Node node, ServiceContext context) {
- context.add(CoreConstants.DONT_PROCESS_OTHER_CONTROLLERS, true);
+ })
+ .addAdditiveController(CoreConstants.CHILDREN_PROVIDER, new ChildrenProvider() {
- List children = new ArrayList();
- String resourceId = node.getIdWithinResource().replace("+", "|");
- for (String sessionId : CorePlugin.getInstance().getResourceService().getSessionsSubscribedToResource(resourceId)) {
- Node session = new Node(SESSION3, node.getResource(), sessionId, null);
- children.add(session);
+ @Override
+ public boolean hasChildren(Node node, ServiceContext context) {
+ return true;
}
- return children;
- }
- }
-
- class ResourceNodeInfo2DebugController extends AbstractController implements IChildrenProvider {
-
- @Override
- public boolean hasChildren(Node node, ServiceContext context) {
- context.add(CoreConstants.DONT_PROCESS_OTHER_CONTROLLERS, true);
- return true;
- }
-
- @Override
- public List getChildren(Node node, ServiceContext context) {
- context.add(CoreConstants.DONT_PROCESS_OTHER_CONTROLLERS, true);
- List children = new ArrayList();
- String resourceId = node.getIdWithinResource().replace("+", "|");
- for (String sessionId : CorePlugin.getInstance().getResourceService().getSessionsSubscribedToResource(resourceId)) {
- Node session = new Node(SESSION2, node.getResource(), sessionId, null);
- children.add(session);
+ @Override
+ public List getChildren(Node node, ServiceContext context) {
+ return Collections.singletonList(new Node(RESOURCES, DEBUG, null, null));
}
- return children;
- }
- }
-
- public void registerControllers() {
-
- // add _debug node to root
-
- CorePlugin.getInstance().getNodeTypeDescriptorRegistry().getOrCreateTypeDescriptor(CoreConstants.ROOT_TYPE)
- .addAdditiveController(CoreConstants.CHILDREN_PROVIDER, new RootDebugController().setOrderIndexAs(10000));
-
- DebugController debugController = new DebugController();
- CorePlugin.getInstance().getNodeTypeDescriptorRegistry().getOrCreateTypeDescriptor(DEBUG)
- .addAdditiveController(CoreConstants.CHILDREN_PROVIDER, debugController)
- .addAdditiveController(CoreConstants.PROPERTIES_PROVIDER, debugController);
+ });
// _debug node
- ResourcesDebugController resourcesDebugController = new ResourcesDebugController();
CorePlugin.getInstance().getNodeTypeDescriptorRegistry().getOrCreateTypeDescriptor(RESOURCES)
- .addAdditiveController(CoreConstants.CHILDREN_PROVIDER, resourcesDebugController)
- .addAdditiveController(CoreConstants.PROPERTIES_PROVIDER, resourcesDebugController);
+ .addAdditiveController(CoreConstants.PROPERTIES_PROVIDER, new PropertiesProvider() {
+
+ @Override
+ public void populateWithProperties(Node node, ServiceContext context) {
+ node.getProperties().put(CoreConstants.NAME, "Resources");
+ }
+ })
+ .addAdditiveController(CoreConstants.CHILDREN_PROVIDER, new ChildrenProvider() {
+
+ @Override
+ public boolean hasChildren(Node node, ServiceContext context) {
+ return true;
+ }
+
+ @Override
+ public List getChildren(Node node, ServiceContext context) {
+ List children = new ArrayList();
+
+ // sessions
+ for (String sessionId : CorePlugin.getInstance().getResourceService().getSubscribedSessions()) {
+ Node session = new Node(SESSION, node.getResource(), sessionId, null);
+ children.add(session);
+ }
+
+ // resources
+ for (String resourceId : CorePlugin.getInstance().getResourceService().getResources()) {
+ Node resource = new Node(RESOURCE_NODE_INFO, node.getResource(), resourceId.replace("|", "+"), null);
+ children.add(resource);
+ }
+
+ return children;
+ }
+ });
// properties for session
CorePlugin.getInstance().getNodeTypeDescriptorRegistry().getOrCreateCategoryTypeDescriptor(SESSION_CATEGORY)
- .addAdditiveController(CoreConstants.PROPERTIES_PROVIDER, new SessionCategoryDebugController().setOrderIndexAs(-500000))
+ .addAdditiveController(CoreConstants.PROPERTIES_PROVIDER, new PropertiesProvider() {
+
+ @Override
+ public void populateWithProperties(Node node, ServiceContext context) {
+ String sessionId = node.getIdWithinResource().split(" ")[0];
+ node.getProperties().put(CoreConstants.NAME, "Session " + sessionId);
+ node.getProperties().put("ip", CorePlugin.getInstance().getResourceService().getSessionProperty(sessionId, "ip"));
+ context.add(CoreConstants.DONT_PROCESS_OTHER_CONTROLLERS, true);
+ }
+ }.setOrderIndexAs(-500000))
.addAdditiveController(CoreConstants.PROPERTY_DESCRIPTOR, new PropertyDescriptor().setNameAs("ip"));
// session as child of _debug; children are resources
CorePlugin.getInstance().getNodeTypeDescriptorRegistry().getOrCreateTypeDescriptor(SESSION)
.addCategory(SESSION_CATEGORY)
- .addAdditiveController(CoreConstants.CHILDREN_PROVIDER, new SessionDebugController());
+ .addAdditiveController(CoreConstants.CHILDREN_PROVIDER, new ChildrenProvider() {
+
+ @Override
+ public boolean hasChildren(Node node, ServiceContext context) {
+ context.add(CoreConstants.DONT_PROCESS_OTHER_CONTROLLERS, true);
+ return true;
+ }
+
+ @Override
+ public List getChildren(Node node, ServiceContext context) {
+ context.add(CoreConstants.DONT_PROCESS_OTHER_CONTROLLERS, true);
+ List children = new ArrayList();
+ String sessionId = node.getIdWithinResource().split(" ")[0];
+ for (String resourceId : CorePlugin.getInstance().getResourceService().getResourcesSubscribedBySession(sessionId)) {
+ Node resource = new Node(RESOURCE_NODE_INFO2, node.getResource(), resourceId.replace("|", "+"), null);
+ children.add(resource);
+ }
+ return children;
+ }
+ });
// properties for resource
CorePlugin.getInstance().getNodeTypeDescriptorRegistry().getOrCreateCategoryTypeDescriptor(RESOURCE_NODE_INFO_CATEGORY)
- .addAdditiveController(CoreConstants.PROPERTIES_PROVIDER, new ResourceNodeInfoCategoryDebugController().setOrderIndexAs(-500000))
+ .addAdditiveController(CoreConstants.PROPERTIES_PROVIDER, new PropertiesProvider() {
+
+ @Override
+ public void populateWithProperties(Node node, ServiceContext context) {
+ String resourceId = node.getIdWithinResource().replace("+", "|").split(" ")[0];
+ node.getProperties().put(CoreConstants.NAME, "Resource " + resourceId);
+ long timestamp = CorePlugin.getInstance().getResourceService().getUpdateRequestedTimestamp(resourceId);
+ node.getProperties().put(CoreConstants.LAST_UPDATE_TIMESTAMP, timestamp);
+ context.add(CoreConstants.DONT_PROCESS_OTHER_CONTROLLERS, true);
+ }
+ }.setOrderIndexAs(-500000))
.addAdditiveController(CoreConstants.PROPERTY_DESCRIPTOR, new PropertyDescriptor().setNameAs(CoreConstants.LAST_UPDATE_TIMESTAMP));
// resource as child of session; children are sessions
CorePlugin.getInstance().getNodeTypeDescriptorRegistry().getOrCreateTypeDescriptor(RESOURCE_NODE_INFO2)
.addCategory(RESOURCE_NODE_INFO_CATEGORY)
- .addAdditiveController(CoreConstants.CHILDREN_PROVIDER, new ResourceNodeInfo2DebugController());
+ .addAdditiveController(CoreConstants.CHILDREN_PROVIDER, new ChildrenProvider() {
+
+ @Override
+ public boolean hasChildren(Node node, ServiceContext context) {
+ context.add(CoreConstants.DONT_PROCESS_OTHER_CONTROLLERS, true);
+ return true;
+ }
+
+ @Override
+ public List getChildren(Node node, ServiceContext context) {
+ context.add(CoreConstants.DONT_PROCESS_OTHER_CONTROLLERS, true);
+
+ List children = new ArrayList();
+ String resourceId = node.getIdWithinResource().replace("+", "|");
+ for (String sessionId : CorePlugin.getInstance().getResourceService().getSessionsSubscribedToResource(resourceId)) {
+ Node session = new Node(SESSION2, node.getResource(), sessionId, null);
+ children.add(session);
+ }
+ return children;
+ }
+ });
// session as child of resource
@@ -254,7 +217,27 @@ public void registerControllers() {
// resource as child of _debug; children are sessions
CorePlugin.getInstance().getNodeTypeDescriptorRegistry().getOrCreateTypeDescriptor(RESOURCE_NODE_INFO)
.addCategory(RESOURCE_NODE_INFO_CATEGORY)
- .addAdditiveController(CoreConstants.CHILDREN_PROVIDER, new ResourceNodeInfoDebugController());
+ .addAdditiveController(CoreConstants.CHILDREN_PROVIDER, new ChildrenProvider() {
+
+ @Override
+ public boolean hasChildren(Node node, ServiceContext context) {
+ context.add(CoreConstants.DONT_PROCESS_OTHER_CONTROLLERS, true);
+ return true;
+ }
+
+ @Override
+ public List getChildren(Node node, ServiceContext context) {
+ context.add(CoreConstants.DONT_PROCESS_OTHER_CONTROLLERS, true);
+
+ List children = new ArrayList();
+ String resourceId = node.getIdWithinResource().replace("+", "|");
+ for (String sessionId : CorePlugin.getInstance().getResourceService().getSessionsSubscribedToResource(resourceId)) {
+ Node session = new Node(SESSION3, node.getResource(), sessionId, null);
+ children.add(session);
+ }
+ return children;
+ }
+ });
// session as child of resource
CorePlugin.getInstance().getNodeTypeDescriptorRegistry().getOrCreateTypeDescriptor(SESSION3)
diff --git a/org.flowerplatform.core/src/org/flowerplatform/core/node/update/controller/UpdateAddNodeController.java b/org.flowerplatform.core/src/org/flowerplatform/core/node/update/controller/UpdateAddNodeController.java
new file mode 100644
index 00000000..9b48a428
--- /dev/null
+++ b/org.flowerplatform.core/src/org/flowerplatform/core/node/update/controller/UpdateAddNodeController.java
@@ -0,0 +1,37 @@
+package org.flowerplatform.core.node.update.controller;
+
+import static org.flowerplatform.core.CoreConstants.UPDATE_CHILD_ADDED;
+
+import org.flowerplatform.core.CoreConstants;
+import org.flowerplatform.core.CorePlugin;
+import org.flowerplatform.core.CoreUtils;
+import org.flowerplatform.core.node.NodeService;
+import org.flowerplatform.core.node.controller.AddNodeController;
+import org.flowerplatform.core.node.remote.Node;
+import org.flowerplatform.core.node.remote.ServiceContext;
+import org.flowerplatform.core.node.update.remote.ChildrenUpdate;
+
+public class UpdateAddNodeController extends AddNodeController {
+
+ public UpdateAddNodeController() {
+ // must be invoked last; otherwise the modification may not be fully/correctly recorded
+ setOrderIndex(100000);
+ }
+
+ @Override
+ public void addNode(Node node, Node child, ServiceContext context) {
+ Node resourceNode = CoreUtils.getResourceNode(node);
+ String insertBeforeFullNodeId = (String) context.get(CoreConstants.INSERT_BEFORE_FULL_NODE_ID);
+ if (resourceNode != null) {
+ CorePlugin.getInstance().getResourceService()
+ .addUpdate(resourceNode.getFullNodeId(),
+ new ChildrenUpdate()
+ .setTypeAs(UPDATE_CHILD_ADDED)
+ .setTargetNodeAs(child)
+ .setFullTargetNodeAddedBeforeIdAs(insertBeforeFullNodeId)
+ .setFullNodeIdAs(node.getFullNodeId()));
+
+ }
+ }
+
+}
diff --git a/org.flowerplatform.core/src/org/flowerplatform/core/node/update/controller/UpdateController.java b/org.flowerplatform.core/src/org/flowerplatform/core/node/update/controller/UpdateController.java
deleted file mode 100644
index df0598e0..00000000
--- a/org.flowerplatform.core/src/org/flowerplatform/core/node/update/controller/UpdateController.java
+++ /dev/null
@@ -1,86 +0,0 @@
-package org.flowerplatform.core.node.update.controller;
-
-import static org.flowerplatform.core.CoreConstants.NODE_IS_RESOURCE_NODE;
-import static org.flowerplatform.core.CoreConstants.UPDATE_CHILD_ADDED;
-import static org.flowerplatform.core.CoreConstants.UPDATE_CHILD_REMOVED;
-
-import org.flowerplatform.core.CoreConstants;
-import org.flowerplatform.core.CorePlugin;
-import org.flowerplatform.core.CoreUtils;
-import org.flowerplatform.core.node.NodeService;
-import org.flowerplatform.core.node.controller.IAddNodeController;
-import org.flowerplatform.core.node.controller.IPropertySetter;
-import org.flowerplatform.core.node.controller.IRemoveNodeController;
-import org.flowerplatform.core.node.controller.PropertyValueWrapper;
-import org.flowerplatform.core.node.remote.Node;
-import org.flowerplatform.core.node.remote.ServiceContext;
-import org.flowerplatform.core.node.update.remote.ChildrenUpdate;
-import org.flowerplatform.core.node.update.remote.PropertyUpdate;
-import org.flowerplatform.util.controller.AbstractController;
-
-/**
- * @author Cristina Constantinescu
- */
-public class UpdateController extends AbstractController
- implements IAddNodeController, IRemoveNodeController, IPropertySetter {
-
- public UpdateController() {
- // must be invoked last; otherwise the modification may not be fully/correctly recorded
- setOrderIndex(100000);
- }
-
- @Override
- public void addNode(Node node, Node child, ServiceContext context) {
- Node resourceNode = CoreUtils.getResourceNode(node);
- String insertBeforeFullNodeId = (String) context.get(CoreConstants.INSERT_BEFORE_FULL_NODE_ID);
- if (resourceNode != null) {
- CorePlugin.getInstance().getResourceService()
- .addUpdate(resourceNode.getFullNodeId(),
- new ChildrenUpdate()
- .setTypeAs(UPDATE_CHILD_ADDED)
- .setTargetNodeAs(child)
- .setFullTargetNodeAddedBeforeIdAs(insertBeforeFullNodeId)
- .setFullNodeIdAs(node.getFullNodeId()));
-
- }
- }
-
- @Override
- public void removeNode(Node node, Node child, ServiceContext context) {
- Node resourceNode = CoreUtils.getResourceNode(node);
- if (resourceNode != null) {
- CorePlugin.getInstance().getResourceService()
- .addUpdate(resourceNode.getFullNodeId(),
- new ChildrenUpdate()
- .setTypeAs(UPDATE_CHILD_REMOVED)
- .setTargetNodeAs(child)
- .setFullNodeIdAs(node.getFullNodeId()));
- }
- }
-
- @Override
- public void setProperty(Node node, String key, PropertyValueWrapper wrapper, ServiceContext context) {
- setUnsetProperty(node, key, wrapper.getPropertyValue(), false, context);
- }
-
- @Override
- public void unsetProperty(Node node, String key, ServiceContext context) {
- setUnsetProperty(node, key, node.getOrPopulateProperties().get(key), false, context);
- }
-
- private void setUnsetProperty(Node node, String key, Object value, boolean isUnset, ServiceContext context) {
- Node resourceNode;
- if (context.getBooleanValue(NODE_IS_RESOURCE_NODE)) {
- resourceNode = node;
- } else {
- resourceNode = CoreUtils.getResourceNode(node);
- if (resourceNode == null) {
- return;
- }
- }
-
- CorePlugin.getInstance().getResourceService()
- .addUpdate(resourceNode.getFullNodeId(), new PropertyUpdate().setKeyAs(key).setValueAs(value).setUnsetAs(isUnset).setFullNodeIdAs(node.getFullNodeId()));
- }
-
-}
diff --git a/org.flowerplatform.core/src/org/flowerplatform/core/node/update/controller/UpdatePropertySetterController.java b/org.flowerplatform.core/src/org/flowerplatform/core/node/update/controller/UpdatePropertySetterController.java
new file mode 100644
index 00000000..c593bd5e
--- /dev/null
+++ b/org.flowerplatform.core/src/org/flowerplatform/core/node/update/controller/UpdatePropertySetterController.java
@@ -0,0 +1,49 @@
+package org.flowerplatform.core.node.update.controller;
+
+import static org.flowerplatform.core.CoreConstants.NODE_IS_RESOURCE_NODE;
+
+import org.flowerplatform.core.CorePlugin;
+import org.flowerplatform.core.CoreUtils;
+import org.flowerplatform.core.node.NodeService;
+import org.flowerplatform.core.node.controller.PropertySetter;
+import org.flowerplatform.core.node.controller.PropertyValueWrapper;
+import org.flowerplatform.core.node.remote.Node;
+import org.flowerplatform.core.node.remote.ServiceContext;
+import org.flowerplatform.core.node.update.remote.PropertyUpdate;
+
+/**
+ * @author Cristina Constantinescu
+ */
+public class UpdatePropertySetterController extends PropertySetter {
+
+ public UpdatePropertySetterController() {
+ // must be invoked last; otherwise the modification may not be fully/correctly recorded
+ setOrderIndex(100000);
+ }
+
+ @Override
+ public void setProperty(Node node, String key, PropertyValueWrapper wrapper, ServiceContext context) {
+ setUnsetProperty(node, key, wrapper.getPropertyValue(), false, context);
+ }
+
+ @Override
+ public void unsetProperty(Node node, String key, ServiceContext context) {
+ setUnsetProperty(node, key, node.getOrPopulateProperties().get(key), false, context);
+ }
+
+ private void setUnsetProperty(Node node, String key, Object value, boolean isUnset, ServiceContext context) {
+ Node resourceNode;
+ if (context.getBooleanValue(NODE_IS_RESOURCE_NODE)) {
+ resourceNode = node;
+ } else {
+ resourceNode = CoreUtils.getResourceNode(node);
+ if (resourceNode == null) {
+ return;
+ }
+ }
+
+ CorePlugin.getInstance().getResourceService()
+ .addUpdate(resourceNode.getFullNodeId(), new PropertyUpdate().setKeyAs(key).setValueAs(value).setUnsetAs(isUnset).setFullNodeIdAs(node.getFullNodeId()));
+ }
+
+}
diff --git a/org.flowerplatform.core/src/org/flowerplatform/core/node/update/controller/UpdateRemoveNodeController.java b/org.flowerplatform.core/src/org/flowerplatform/core/node/update/controller/UpdateRemoveNodeController.java
new file mode 100644
index 00000000..d4c44a35
--- /dev/null
+++ b/org.flowerplatform.core/src/org/flowerplatform/core/node/update/controller/UpdateRemoveNodeController.java
@@ -0,0 +1,36 @@
+package org.flowerplatform.core.node.update.controller;
+
+import static org.flowerplatform.core.CoreConstants.UPDATE_CHILD_REMOVED;
+
+import org.flowerplatform.core.CorePlugin;
+import org.flowerplatform.core.CoreUtils;
+import org.flowerplatform.core.node.NodeService;
+import org.flowerplatform.core.node.controller.RemoveNodeController;
+import org.flowerplatform.core.node.remote.Node;
+import org.flowerplatform.core.node.remote.ServiceContext;
+import org.flowerplatform.core.node.update.remote.ChildrenUpdate;
+
+/**
+ * @author Cristina Constantinescu
+ */
+public class UpdateRemoveNodeController extends RemoveNodeController {
+
+ public UpdateRemoveNodeController() {
+ // must be invoked last; otherwise the modification may not be fully/correctly recorded
+ setOrderIndex(100000);
+ }
+
+ @Override
+ public void removeNode(Node node, Node child, ServiceContext context) {
+ Node resourceNode = CoreUtils.getResourceNode(node);
+ if (resourceNode != null) {
+ CorePlugin.getInstance().getResourceService()
+ .addUpdate(resourceNode.getFullNodeId(),
+ new ChildrenUpdate()
+ .setTypeAs(UPDATE_CHILD_REMOVED)
+ .setTargetNodeAs(child)
+ .setFullNodeIdAs(node.getFullNodeId()));
+ }
+ }
+
+}
diff --git a/org.flowerplatform.core/src/org/flowerplatform/core/repository/RepositoryChildrenProvider.java b/org.flowerplatform.core/src/org/flowerplatform/core/repository/RepositoryChildrenProvider.java
index e8477a90..caae5cbe 100644
--- a/org.flowerplatform.core/src/org/flowerplatform/core/repository/RepositoryChildrenProvider.java
+++ b/org.flowerplatform.core/src/org/flowerplatform/core/repository/RepositoryChildrenProvider.java
@@ -5,15 +5,14 @@
import org.flowerplatform.core.CoreConstants;
import org.flowerplatform.core.node.NodeService;
-import org.flowerplatform.core.node.controller.IChildrenProvider;
+import org.flowerplatform.core.node.controller.ChildrenProvider;
import org.flowerplatform.core.node.remote.Node;
import org.flowerplatform.core.node.remote.ServiceContext;
-import org.flowerplatform.util.controller.AbstractController;
/**
* @author Sebastian Solomon
*/
-public class RepositoryChildrenProvider extends AbstractController implements IChildrenProvider {
+public class RepositoryChildrenProvider extends ChildrenProvider {
public RepositoryChildrenProvider() {
setOrderIndex(200);
diff --git a/org.flowerplatform.core/src/org/flowerplatform/core/repository/RepositoryPropertiesProvider.java b/org.flowerplatform.core/src/org/flowerplatform/core/repository/RepositoryPropertiesProvider.java
index 6b883463..1ee43f31 100644
--- a/org.flowerplatform.core/src/org/flowerplatform/core/repository/RepositoryPropertiesProvider.java
+++ b/org.flowerplatform.core/src/org/flowerplatform/core/repository/RepositoryPropertiesProvider.java
@@ -4,15 +4,14 @@
import org.flowerplatform.core.CorePlugin;
import org.flowerplatform.core.file.IFileAccessController;
import org.flowerplatform.core.node.NodeService;
-import org.flowerplatform.core.node.controller.IPropertiesProvider;
+import org.flowerplatform.core.node.controller.PropertiesProvider;
import org.flowerplatform.core.node.remote.Node;
import org.flowerplatform.core.node.remote.ServiceContext;
-import org.flowerplatform.util.controller.AbstractController;
/**
* @author Sebastian Solomon
*/
-public class RepositoryPropertiesProvider extends AbstractController implements IPropertiesProvider {
+public class RepositoryPropertiesProvider extends PropertiesProvider {
@Override
public void populateWithProperties(Node node, ServiceContext context) {
diff --git a/org.flowerplatform.core/src/org/flowerplatform/core/repository/RootChildrenProvider.java b/org.flowerplatform.core/src/org/flowerplatform/core/repository/RootChildrenProvider.java
index 6251d992..bcbbcfb1 100644
--- a/org.flowerplatform.core/src/org/flowerplatform/core/repository/RootChildrenProvider.java
+++ b/org.flowerplatform.core/src/org/flowerplatform/core/repository/RootChildrenProvider.java
@@ -5,15 +5,14 @@
import org.flowerplatform.core.CoreConstants;
import org.flowerplatform.core.node.NodeService;
-import org.flowerplatform.core.node.controller.IChildrenProvider;
+import org.flowerplatform.core.node.controller.ChildrenProvider;
import org.flowerplatform.core.node.remote.Node;
import org.flowerplatform.core.node.remote.ServiceContext;
-import org.flowerplatform.util.controller.AbstractController;
/**
* @author Sebastian Solomon
*/
-public class RootChildrenProvider extends AbstractController implements IChildrenProvider {
+public class RootChildrenProvider extends ChildrenProvider {
public RootChildrenProvider() {
setOrderIndex(200);
diff --git a/org.flowerplatform.core/src/org/flowerplatform/core/repository/RootPropertiesProvider.java b/org.flowerplatform.core/src/org/flowerplatform/core/repository/RootPropertiesProvider.java
index b47d9958..d8ca882c 100644
--- a/org.flowerplatform.core/src/org/flowerplatform/core/repository/RootPropertiesProvider.java
+++ b/org.flowerplatform.core/src/org/flowerplatform/core/repository/RootPropertiesProvider.java
@@ -2,15 +2,14 @@
import org.flowerplatform.core.CoreConstants;
import org.flowerplatform.core.node.NodeService;
-import org.flowerplatform.core.node.controller.IPropertiesProvider;
+import org.flowerplatform.core.node.controller.PropertiesProvider;
import org.flowerplatform.core.node.remote.Node;
import org.flowerplatform.core.node.remote.ServiceContext;
-import org.flowerplatform.util.controller.AbstractController;
/**
* @author Sebastian Solomon
*/
-public class RootPropertiesProvider extends AbstractController implements IPropertiesProvider {
+public class RootPropertiesProvider extends PropertiesProvider {
@Override
public void populateWithProperties(Node node, ServiceContext context) {
diff --git a/org.flowerplatform.flex_client.core/.actionScriptProperties b/org.flowerplatform.flex_client.core/.actionScriptProperties
index 457f4ff5..23039ae0 100644
--- a/org.flowerplatform.flex_client.core/.actionScriptProperties
+++ b/org.flowerplatform.flex_client.core/.actionScriptProperties
@@ -1,5 +1,5 @@
-
+
diff --git a/org.flowerplatform.flex_client.core/.flexLibProperties b/org.flowerplatform.flex_client.core/.flexLibProperties
index 3043e14d..fe78c50d 100644
--- a/org.flowerplatform.flex_client.core/.flexLibProperties
+++ b/org.flowerplatform.flex_client.core/.flexLibProperties
@@ -7,6 +7,12 @@
+
+
+
+
+
+
diff --git a/org.flowerplatform.flex_client.core/src/org/flowerplatform/flex_client/core/CorePlugin.as b/org.flowerplatform.flex_client.core/src/org/flowerplatform/flex_client/core/CorePlugin.as
index e1b044aa..21cac783 100644
--- a/org.flowerplatform.flex_client.core/src/org/flowerplatform/flex_client/core/CorePlugin.as
+++ b/org.flowerplatform.flex_client.core/src/org/flowerplatform/flex_client/core/CorePlugin.as
@@ -194,39 +194,7 @@ package org.flowerplatform.flex_client.core {
}
);
- serviceLocator.invoke("nodeService.getRegisteredTypeDescriptors", null,
- function(result:Object):void {
- var list:ArrayCollection = ArrayCollection(result);
- for (var i:int = 0; i < list.length; i++) {
- var remote:TypeDescriptorRemote = TypeDescriptorRemote(list.getItemAt(i));
-
- // create new type descriptor with remote type
- var descriptor:TypeDescriptor = null;
- if (Utils.beginsWith(remote.type, FlexUtilConstants.CATEGORY_PREFIX)) {
- descriptor = nodeTypeDescriptorRegistry.getOrCreateCategoryTypeDescriptor(remote.type);
- } else {
- descriptor = nodeTypeDescriptorRegistry.getOrCreateTypeDescriptor(remote.type);
- }
-
- // add static categories
- for each (var category:String in remote.categories) {
- descriptor.addCategory(category);
- }
-
- // add single controllers
- for (var singleControllerType:String in remote.singleControllers) {
- descriptor.addSingleController(singleControllerType, remote.singleControllers[singleControllerType]);
- }
-
- // add additive controllers
- for (var additiveControllerType:String in remote.additiveControllers) {
- for each (var additiveController:AbstractController in remote.additiveControllers[additiveControllerType]) {
- descriptor.addAdditiveController(additiveControllerType, additiveController);
- }
- }
- }
- }
- );
+ serviceLocator.invoke("nodeService.getRegisteredTypeDescriptors", null, nodeTypeDescriptorRegistry.addTypeDescriptorsRemote);
nodeTypeDescriptorRegistry.getOrCreateCategoryTypeDescriptor(FlexUtilConstants.CATEGORY_ALL)
.addSingleController(CoreConstants.NODE_TITLE_PROVIDER, new GenericValueProviderFromDescriptor(CoreConstants.PROPERTY_FOR_TITLE_DESCRIPTOR))
@@ -259,8 +227,6 @@ package org.flowerplatform.flex_client.core {
.setViewContent(new LinkView())
.setWidth(500)
.setHeight(250)
- .setTitle(Resources.getMessage("link.title"))
- .setIcon(Resources.externalLinkIcon)
.show();
})
);
@@ -276,10 +242,8 @@ package org.flowerplatform.flex_client.core {
.setFunctionDelegate(function ():void {
FlexUtilGlobals.getInstance().popupHandlerFactory.createPopupHandler()
.setViewContent(new OpenNodeView())
- .setTitle(Resources.getMessage("open.node.action.label"))
- .setIcon(Resources.openResourceIcon)
.setWidth(400)
- .setHeight(150)
+ .setHeight(110)
.show();
})
);
@@ -310,8 +274,10 @@ package org.flowerplatform.flex_client.core {
.show();
})
);
-
- FlexUtilGlobals.getInstance().keyBindings.additionalActionProviders.actionProviders.push(globalMenuActionProvider);
+
+ // initial filterShortcuts
+ // other filterShortcut must be added by corresponding keyboard action
+ FlexUtilGlobals.getInstance().keyBindings.filterShortcuts = [Keyboard.CONTROL, Keyboard.COMMAND, Keyboard.SHIFT, Keyboard.ALTERNATE];
}
override protected function registerClassAliases():void {
diff --git a/org.flowerplatform.flex_client.core/src/org/flowerplatform/flex_client/core/editor/EditorFrontend.as b/org.flowerplatform.flex_client.core/src/org/flowerplatform/flex_client/core/editor/EditorFrontend.as
index ba7815fc..0f716ab5 100644
--- a/org.flowerplatform.flex_client.core/src/org/flowerplatform/flex_client/core/editor/EditorFrontend.as
+++ b/org.flowerplatform.flex_client.core/src/org/flowerplatform/flex_client/core/editor/EditorFrontend.as
@@ -111,10 +111,5 @@ package org.flowerplatform.flex_client.core.editor {
}
return title;
}
-
- public function additionalCloseHandler():void {
- // nothing to do
- }
-
}
}
diff --git a/org.flowerplatform.flex_client.core/src/org/flowerplatform/flex_client/core/editor/OpenInNewEditorDialog.mxml b/org.flowerplatform.flex_client.core/src/org/flowerplatform/flex_client/core/editor/OpenInNewEditorDialog.mxml
index d1f36353..2749da20 100644
--- a/org.flowerplatform.flex_client.core/src/org/flowerplatform/flex_client/core/editor/OpenInNewEditorDialog.mxml
+++ b/org.flowerplatform.flex_client.core/src/org/flowerplatform/flex_client/core/editor/OpenInNewEditorDialog.mxml
@@ -12,15 +12,22 @@ previously), and a new editor is opened directly.
@author Mariana Gheorghe
-->
-
-
+ implements="org.flowerplatform.flexutil.view_content_host.IViewContent,org.flowerplatform.flexutil.dialog.IDialog">
+
+
+
+
-
+
+
+
+
+
+
{
+ return null;
}
-
+
private var _resultHandler:IDialogResultHandler;
public function setResultHandler(resultHandler:IDialogResultHandler):void {
_resultHandler = resultHandler;
}
-
]]>
-
+
diff --git a/org.flowerplatform.flex_client.core/src/org/flowerplatform/flex_client/core/editor/action/RenameAction.as b/org.flowerplatform.flex_client.core/src/org/flowerplatform/flex_client/core/editor/action/RenameAction.as
index 5382fd5e..9b577717 100644
--- a/org.flowerplatform.flex_client.core/src/org/flowerplatform/flex_client/core/editor/action/RenameAction.as
+++ b/org.flowerplatform.flex_client.core/src/org/flowerplatform/flex_client/core/editor/action/RenameAction.as
@@ -84,8 +84,7 @@ package org.flowerplatform.flex_client.core.editor.action {
.setViewContent(view)
.setWidth(500)
.setHeight(400)
- .setTitle(label)
- .setIcon(icon)
+ .setTitle(label)
.show();
}
diff --git a/org.flowerplatform.flex_client.core/src/org/flowerplatform/flex_client/core/editor/action/UploadAction.as b/org.flowerplatform.flex_client.core/src/org/flowerplatform/flex_client/core/editor/action/UploadAction.as
index 43b354bc..1526b0ca 100644
--- a/org.flowerplatform.flex_client.core/src/org/flowerplatform/flex_client/core/editor/action/UploadAction.as
+++ b/org.flowerplatform.flex_client.core/src/org/flowerplatform/flex_client/core/editor/action/UploadAction.as
@@ -40,8 +40,6 @@ package org.flowerplatform.flex_client.core.editor.action {
.setViewContent(view)
.setWidth(500)
.setHeight(180)
- .setTitle(label)
- .setIcon(icon)
.show();
}
}
diff --git a/org.flowerplatform.flex_client.core/src/org/flowerplatform/flex_client/core/editor/resource/ResourceNodesListView.mxml b/org.flowerplatform.flex_client.core/src/org/flowerplatform/flex_client/core/editor/resource/ResourceNodesListView.mxml
index 4c31813b..bed2a573 100644
--- a/org.flowerplatform.flex_client.core/src/org/flowerplatform/flex_client/core/editor/resource/ResourceNodesListView.mxml
+++ b/org.flowerplatform.flex_client.core/src/org/flowerplatform/flex_client/core/editor/resource/ResourceNodesListView.mxml
@@ -96,10 +96,6 @@
FlexUtilGlobals.getInstance().popupHandlerFactory.removePopup(this);
}
- public function additionalCloseHandler():void {
- // nothing to do
- }
-
]]>
diff --git a/org.flowerplatform.flex_client.core/src/org/flowerplatform/flex_client/core/editor/resource/ResourceNodesManager.as b/org.flowerplatform.flex_client.core/src/org/flowerplatform/flex_client/core/editor/resource/ResourceNodesManager.as
index a407a894..efaee97b 100644
--- a/org.flowerplatform.flex_client.core/src/org/flowerplatform/flex_client/core/editor/resource/ResourceNodesManager.as
+++ b/org.flowerplatform.flex_client.core/src/org/flowerplatform/flex_client/core/editor/resource/ResourceNodesManager.as
@@ -105,9 +105,6 @@ package org.flowerplatform.flex_client.core.editor.resource {
}
public function viewsRemovedHandler(e:ViewsRemovedEvent):void {
- if (!e.canPreventDefault) {
- return;
- }
var editors:Array = [];
for each (var view:Object in e.removedViews) {
var viewComponent:UIComponent = FlexUtilGlobals.getInstance().workbench.getEditorFromViewComponent(UIComponent(view));
diff --git a/org.flowerplatform.flex_client.core/src/org/flowerplatform/flex_client/core/editor/ui/AboutView.mxml b/org.flowerplatform.flex_client.core/src/org/flowerplatform/flex_client/core/editor/ui/AboutView.mxml
index b2b0b09e..5116e1cc 100644
--- a/org.flowerplatform.flex_client.core/src/org/flowerplatform/flex_client/core/editor/ui/AboutView.mxml
+++ b/org.flowerplatform.flex_client.core/src/org/flowerplatform/flex_client/core/editor/ui/AboutView.mxml
@@ -67,9 +67,6 @@ license-end
UIComponent(apiVersionLabel.labelDisplay).setStyle('fontWeight','normal');
}
- public function additionalCloseHandler():void {
- // nothing to do
- }
]]>
diff --git a/org.flowerplatform.flex_client.core/src/org/flowerplatform/flex_client/core/editor/ui/OpenNodeView.mxml b/org.flowerplatform.flex_client.core/src/org/flowerplatform/flex_client/core/editor/ui/OpenNodeView.mxml
index dd34953c..4a952836 100644
--- a/org.flowerplatform.flex_client.core/src/org/flowerplatform/flex_client/core/editor/ui/OpenNodeView.mxml
+++ b/org.flowerplatform.flex_client.core/src/org/flowerplatform/flex_client/core/editor/ui/OpenNodeView.mxml
@@ -21,11 +21,12 @@ license-end
-
+ creationComplete="creationCompleteHandler(event)">
{
+ return null;
+ }
+
+ public function get viewHost():IViewHost {
+ return _viewHost;
+ }
+
+ public function set viewHost(viewHost:IViewHost):void {
+ _viewHost = viewHost;
+ _viewHost.setLabel(Resources.getMessage("open.node.action.label"));
+ _viewHost.setIcon(Resources.openResourceIcon);
+ }
+
+ protected function creationCompleteHandler(event:FlexEvent):void {
focusManager.setFocus(link);
}
- override protected function okHandler(event:Event = null):void {
+ protected function okButtonHandler(event:MouseEvent):void {
CorePlugin.getInstance().handleLinkForCommand(CoreConstants.OPEN_RESOURCES, link.text);
- cancelHandler();
+ cancel();
+ }
+
+ protected function cancel():void {
+ FlexUtilGlobals.getInstance().popupHandlerFactory.removePopup(this);
}
-
+
]]>
-
+
-
+
-
-
+
+
+
+
+
+
diff --git a/org.flowerplatform.flex_client.core/src/org/flowerplatform/flex_client/core/editor/ui/RichTextWithRendererView.mxml b/org.flowerplatform.flex_client.core/src/org/flowerplatform/flex_client/core/editor/ui/RichTextWithRendererView.mxml
index 04223e09..78c25eeb 100644
--- a/org.flowerplatform.flex_client.core/src/org/flowerplatform/flex_client/core/editor/ui/RichTextWithRendererView.mxml
+++ b/org.flowerplatform.flex_client.core/src/org/flowerplatform/flex_client/core/editor/ui/RichTextWithRendererView.mxml
@@ -2,33 +2,43 @@
-
+ implements="org.flowerplatform.flexutil.view_content_host.IViewContent"
+ width="100%" height="100%" initialize="initializeHandler(event)"
+ creationComplete="creationCompleteHandler(event)">
true, the node's renderer will be displayed at the bottom.
*
@@ -41,9 +51,18 @@
public var resultHandler:Function;
protected var renderer:AbstractMindMapModelRenderer;
-
- override protected function initializeHandler(event:FlexEvent):void {
- super.initializeHandler(event);
+ protected var _viewhost:IViewHost;
+
+ public function getActions(selection:IList):Vector. {
+ return null;
+ }
+
+ public function set viewHost(viewHost:IViewHost):void {
+ _viewhost = viewHost;
+ _viewhost.setIcon(icon);
+ }
+
+ protected function initializeHandler(event:FlexEvent):void {
if (showRendererArea) {
renderer.data = ObjectUtil.copy(node);
}
@@ -70,15 +89,18 @@
/**
* @author Sebastian Solomon
*/
- override protected function creationCompleteHandler(event:FlexEvent):void {
- super.creationCompleteHandler(event);
+ protected function creationCompleteHandler(flexvent:FlexEvent):void {
focusManager.setFocus(textEditor);
}
- override protected function okHandler(event:Event = null):void {
+ protected function okButton_clickHandler(event:MouseEvent):void {
resultHandler(textEditor.text);
}
-
+
+ protected function cancelButton_clickHandler(event:MouseEvent = null):void {
+ FlexUtilGlobals.getInstance().popupHandlerFactory.removePopup(this);
+ }
+
public function textChangeHandler(event:TextOperationEvent):void {
if (!showRendererArea) {
return;
@@ -90,10 +112,14 @@
// dispatch event to update preview renderer's text
renderer.data.dispatchEvent(new NodeUpdatedEvent(Node(renderer.data), new ArrayList([titleProperty])));
}
-
+
]]>
-
+
+
+
+
+
@@ -109,5 +135,10 @@
-
-
+
+
+
+
+
+
+
diff --git a/org.flowerplatform.flex_client.core/src/org/flowerplatform/flex_client/core/editor/ui/UploadView.mxml b/org.flowerplatform.flex_client.core/src/org/flowerplatform/flex_client/core/editor/ui/UploadView.mxml
index 0be98625..f102af09 100644
--- a/org.flowerplatform.flex_client.core/src/org/flowerplatform/flex_client/core/editor/ui/UploadView.mxml
+++ b/org.flowerplatform.flex_client.core/src/org/flowerplatform/flex_client/core/editor/ui/UploadView.mxml
@@ -2,10 +2,10 @@
-
+ xmlns:mx="library://ns.adobe.com/flex/mx" implements="org.flowerplatform.flexutil.view_content_host.IViewContent"
+ creationComplete="creationCompleteHandler(event)">
{
+ return null;
+ }
+
+ public function set viewHost(viewHost:IViewHost):void {
+ _viewhost = viewHost;
+ _viewhost.setLabel(Resources.getMessage("action.upload"));
+ _viewhost.setIcon(Resources.uploadIcon);
+ }
+
+ protected function creationCompleteHandler(event:FlexEvent):void {
fileReference = new FileReference();
fileReference.addEventListener(Event.SELECT, onSelectHandler);
fileReference.addEventListener(ProgressEvent.PROGRESS, onProgressHandler);
@@ -48,7 +57,7 @@
fileReference.browse();
}
- override protected function okHandler(event:Event = null):void {
+ protected function upload_clickHandler(event:MouseEvent):void {
if (Utils.endsWith(fileReference.name, ZIP_EXTENSION)) {
FlexUtilGlobals.getInstance().messageBoxFactory.createMessageBox()
.setText(Resources.getMessage("upload.make.archive"))
@@ -75,7 +84,7 @@
fileReference.upload(request);
progressArea.visible = true;
- okButton.enabled = false;
+ uploadBtn.enabled = false;
browseBtn.enabled = false;
}
}
@@ -84,7 +93,7 @@
protected function onSelectHandler(event:Event):void {
locationTxt.text = fileReference.name;
- okButton.enabled = true;
+ uploadBtn.enabled = true;
}
protected function onIoErrorHandler(event:IOErrorEvent):void {
@@ -92,7 +101,7 @@
.setTitle(Resources.getMessage("error"))
.setText(event.text)
.showMessageBox();
- cancelHandler();
+ closeView();
}
protected function onProgressHandler(event:ProgressEvent):void {
@@ -113,27 +122,34 @@
}
}
- cancelHandler();
+ closeView();
}
-
- override public function additionalCloseHandler():void {
+
+ protected function closeView():void {
fileReference.cancel();
+ FlexUtilGlobals.getInstance().popupHandlerFactory.removePopup(this);
}
]]>
+
+
+
-
+
-
-
-
+
-
-
+
+
+
+
+
+
+
diff --git a/org.flowerplatform.flex_client.core/src/org/flowerplatform/flex_client/core/link/LinkView.mxml b/org.flowerplatform.flex_client.core/src/org/flowerplatform/flex_client/core/link/LinkView.mxml
index 029a4d9d..3192a054 100644
--- a/org.flowerplatform.flex_client.core/src/org/flowerplatform/flex_client/core/link/LinkView.mxml
+++ b/org.flowerplatform.flex_client.core/src/org/flowerplatform/flex_client/core/link/LinkView.mxml
@@ -58,6 +58,8 @@ license-end
public function set viewHost(viewHost:IViewHost):void {
_viewHost = viewHost;
+ _viewHost.setLabel(Resources.getMessage('link.title'));
+ _viewHost.setIcon(Resources.externalLinkIcon);
}
protected function creationCompleteHandler(event:FlexEvent):void {
@@ -86,9 +88,6 @@ license-end
return CorePlugin.getInstance().getAppUrl() + "?" + CoreConstants.OPEN_RESOURCES + "=";
}
- public function additionalCloseHandler():void {
- // nothing to do
- }
]]>
diff --git a/org.flowerplatform.flex_client.core/src/org/flowerplatform/flex_client/core/service/ReconnectingViewContent.mxml b/org.flowerplatform.flex_client.core/src/org/flowerplatform/flex_client/core/service/ReconnectingViewContent.mxml
index 3f5bd0d8..8d746643 100644
--- a/org.flowerplatform.flex_client.core/src/org/flowerplatform/flex_client/core/service/ReconnectingViewContent.mxml
+++ b/org.flowerplatform.flex_client.core/src/org/flowerplatform/flex_client/core/service/ReconnectingViewContent.mxml
@@ -73,9 +73,6 @@
return null;
}
- public function additionalCloseHandler():void {
- // nothing to do
- }
]]>
diff --git a/org.flowerplatform.flex_client.core/src/org/flowerplatform/flex_client/core/shortcut/AssignHotKeyAction.as b/org.flowerplatform.flex_client.core/src/org/flowerplatform/flex_client/core/shortcut/AssignHotKeyAction.as
index d3824542..427abd1e 100644
--- a/org.flowerplatform.flex_client.core/src/org/flowerplatform/flex_client/core/shortcut/AssignHotKeyAction.as
+++ b/org.flowerplatform.flex_client.core/src/org/flowerplatform/flex_client/core/shortcut/AssignHotKeyAction.as
@@ -15,17 +15,11 @@ package org.flowerplatform.flex_client.core.shortcut {
*/
public class AssignHotKeyAction extends ActionBase {
- private var assignShortcutForActionViewClass:Class = AssignShorcutForActionView;
-
- public function AssignHotKeyAction(assignShortcutForActionViewClass:Class = null) {
+ public function AssignHotKeyAction() {
super();
label = Resources.getMessage("asign.hotkey.action.label");
icon = Resources.keyboardIcon;
parentId = CoreConstants.TOOLS_MENU_ID;
-
- if (assignShortcutForActionViewClass != null) {
- this.assignShortcutForActionViewClass = assignShortcutForActionViewClass;
- }
}
override public function run():void {
@@ -34,13 +28,9 @@ package org.flowerplatform.flex_client.core.shortcut {
var messageBox:IMessageBox = FlexUtilGlobals.getInstance().messageBoxFactory.createMessageBox()
.setTitle(label)
.setText(Resources.getMessage("shortcut.action.click"))
- .setIcon(icon)
.setWidth(300)
.setHeight(100)
- .addButton(FlexUtilAssets.INSTANCE.getMessage('dialog.cancel'), function():void {
- FlexUtilGlobals.getInstance().keyBindings.learnShortcutOnNextActionInvocation = false;
- UIComponent(FlexGlobals.topLevelApplication).stage.removeEventListener(AssignShortcutForActionEvent.ASSIGN_SHORTCUT_FOR_ACTION, afterSelectingAnActionHandler);
- }, true);
+ .addButton(FlexUtilAssets.INSTANCE.getMessage('dialog.cancel'), function():void {FlexUtilGlobals.getInstance().keyBindings.learnShortcutOnNextActionInvocation = false;});
messageBox.showMessageBox(false);
@@ -50,14 +40,12 @@ package org.flowerplatform.flex_client.core.shortcut {
UIComponent(FlexGlobals.topLevelApplication).stage.removeEventListener(AssignShortcutForActionEvent.ASSIGN_SHORTCUT_FOR_ACTION, afterSelectingAnActionHandler);
// show view to enter shortcut for selected actionId
- var view:AssignShorcutForActionView = new assignShortcutForActionViewClass();
+ var view:AssignShorcutForActionView = new AssignShorcutForActionView();
view.actionId = event.actionId;
FlexUtilGlobals.getInstance().popupHandlerFactory.createPopupHandler()
.setViewContent(view)
.setWidth(450)
.setHeight(130)
- .setTitle(Resources.getMessage("shortcut.enter"))
- .setIcon(icon)
.show();
};
UIComponent(FlexGlobals.topLevelApplication).stage.addEventListener(AssignShortcutForActionEvent.ASSIGN_SHORTCUT_FOR_ACTION, afterSelectingAnActionHandler);
diff --git a/org.flowerplatform.flex_client.core/src/org/flowerplatform/flex_client/core/shortcut/AssignShorcutForActionView.mxml b/org.flowerplatform.flex_client.core/src/org/flowerplatform/flex_client/core/shortcut/AssignShorcutForActionView.mxml
index 877d0bec..28726317 100644
--- a/org.flowerplatform.flex_client.core/src/org/flowerplatform/flex_client/core/shortcut/AssignShorcutForActionView.mxml
+++ b/org.flowerplatform.flex_client.core/src/org/flowerplatform/flex_client/core/shortcut/AssignShorcutForActionView.mxml
@@ -2,11 +2,14 @@
-
+ xmlns:mx="library://ns.adobe.com/flex/mx" implements="org.flowerplatform.flexutil.view_content_host.IViewContent"
+ creationComplete="creationCompleteHandler(event)" >
+
+
+
{
+ return null;
+ }
+
+ public function set viewHost(viewHost:IViewHost):void {
+ _viewhost = viewHost;
+ _viewhost.setLabel(Resources.getMessage("shortcut.enter"));
+ _viewhost.setIcon(Resources.keyboardIcon);
+ }
+
+ protected function creationCompleteHandler(event:FlexEvent):void {
// add listener with the biggest priority -> NO OTHER listeners must intercept key_down events
- UIComponent(FlexGlobals.topLevelApplication).stage.addEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler1, true, int.MAX_VALUE);
+ UIComponent(FlexGlobals.topLevelApplication).stage.addEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler1, false, int.MAX_VALUE);
Utils.makePseudoDisabled(txtShortcut);
-
- okButton.tabFocusEnabled = false;
- cancelButton.tabFocusEnabled = false;
}
private function keyDownHandler1(event:KeyboardEvent):void {
@@ -47,15 +59,6 @@
return;
}
- // shortcut must start with a key found in filterShortcuts
- var filterShortcuts:Dictionary = FlexUtilGlobals.getInstance().keyBindings.filterShortcuts;
- if (!(event.ctrlKey && (filterShortcuts.hasOwnProperty("CONTROL") || filterShortcuts.hasOwnProperty("COMMAND")) ||
- event.altKey && filterShortcuts.hasOwnProperty("ALTERNATE") ||
- event.shiftKey && filterShortcuts.hasOwnProperty("SHIFT") ||
- filterShortcuts.hasOwnProperty(Utils.getKeyNameFromKeyCode(event.keyCode)))) {
- return;
- }
-
shortcut = new Shortcut(event.ctrlKey, event.shiftKey, event.altKey, event.keyCode);
var shortcutLabel:String = shortcut.toString();
if (shortcutLabel == null) {
@@ -65,37 +68,29 @@
txtShortcut.text = shortcutLabel;
}
- override protected function okHandler(event:Event = null):void {
- if (shortcut == null || shortcut.toString() == null) {
- return;
+ protected function okButton_clickHandler(event:MouseEvent):void {
+ if (shortcut != null && shortcut.toString() != null) {
+ if (!FlexUtilGlobals.getInstance().keyBindings.registerBinding(shortcut, actionId)) {
+ FlexUtilGlobals.getInstance().messageBoxFactory.createMessageBox()
+ .setText(Resources.getMessage("shortcut.already.used"))
+ .setWidth(400)
+ .setHeight(200)
+ .showMessageBox();
+ return;
+ }
}
-
- var handler:Object = FlexUtilGlobals.getInstance().keyBindings.getRegisteredHandler(shortcut);
- if (handler != null) { // shortcut already assign, ask user
- FlexUtilGlobals.getInstance().messageBoxFactory.createMessageBox()
- .setText(Resources.getMessage("shortcut.already.used", [handler.toString()]))
- .setTitle(Resources.getMessage("info"))
- .setWidth(400)
- .setHeight(200)
- .addButton(FlexUtilAssets.INSTANCE.getMessage('dialog.yes'), function():void {registerBinding(); cancelHandler();})
- .addButton(FlexUtilAssets.INSTANCE.getMessage('dialog.no'))
- .showMessageBox();
- } else {
- registerBinding();
- cancelHandler();
- }
+ cancelButton_clickHandler();
}
- protected function registerBinding():void {
- FlexUtilGlobals.getInstance().keyBindings.registerBinding(shortcut, actionId);
- }
-
- override public function additionalCloseHandler():void {
+ protected function cancelButton_clickHandler(event:MouseEvent = null):void {
// important to remove listener after using it -> otherwise BIG problems (no other key_down events will be dispatched)
- UIComponent(FlexGlobals.topLevelApplication).stage.removeEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler1, true);
+ UIComponent(FlexGlobals.topLevelApplication).stage.removeEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler1);
+
+ FlexUtilGlobals.getInstance().popupHandlerFactory.removePopup(this);
+
FlexUtilGlobals.getInstance().keyBindings.learnShortcutOnNextActionInvocation = false;
}
-
+
]]>
@@ -103,5 +98,10 @@
-
-
+
+
+
+
+
+
+
diff --git a/org.flowerplatform.flex_client.host_app.mobile/src/org/flowerplatform/flex_client/host_app/mobile/view_content_host/WorkbenchMobileSplitViewHost.as b/org.flowerplatform.flex_client.host_app.mobile/src/org/flowerplatform/flex_client/host_app/mobile/view_content_host/WorkbenchMobileSplitViewHost.as
index 3b3e1134..8bba17e8 100644
--- a/org.flowerplatform.flex_client.host_app.mobile/src/org/flowerplatform/flex_client/host_app/mobile/view_content_host/WorkbenchMobileSplitViewHost.as
+++ b/org.flowerplatform.flex_client.host_app.mobile/src/org/flowerplatform/flex_client/host_app/mobile/view_content_host/WorkbenchMobileSplitViewHost.as
@@ -80,14 +80,15 @@ package org.flowerplatform.flex_client.host_app.mobile.view_content_host {
public function closeViews(views:ArrayCollection, shouldDispatchEvent:Boolean=true):void {
var viewsRemovedEvent:ViewsRemovedEvent = new ViewsRemovedEvent(views);
- viewsRemovedEvent.canPreventDefault = shouldDispatchEvent;
- dispatchEvent(viewsRemovedEvent);
-
+ if (shouldDispatchEvent) {
+ dispatchEvent(viewsRemovedEvent);
+ }
for each (var view:UIComponent in views) {
if (!viewsRemovedEvent.dontRemoveViews.contains(view)) {
var viewRemovedEvent:ViewRemovedEvent = new ViewRemovedEvent();
- viewRemovedEvent.canPreventDefault = shouldDispatchEvent;
- view.dispatchEvent(viewRemovedEvent);
+ if (shouldDispatchEvent) {
+ view.dispatchEvent(viewRemovedEvent);
+ }
}
}
}
diff --git a/org.flowerplatform.flex_client.host_app.mobile/src/org/flowerplatform/flex_client/host_app/mobile/view_edit_server_account/CommunicationErrorView.mxml b/org.flowerplatform.flex_client.host_app.mobile/src/org/flowerplatform/flex_client/host_app/mobile/view_edit_server_account/CommunicationErrorView.mxml
index 9c8be718..3262bc93 100644
--- a/org.flowerplatform.flex_client.host_app.mobile/src/org/flowerplatform/flex_client/host_app/mobile/view_edit_server_account/CommunicationErrorView.mxml
+++ b/org.flowerplatform.flex_client.host_app.mobile/src/org/flowerplatform/flex_client/host_app/mobile/view_edit_server_account/CommunicationErrorView.mxml
@@ -51,9 +51,6 @@
.show();
}
- public function additionalCloseHandler():void {
- // nothing to do
- }
]]>
diff --git a/org.flowerplatform.flex_client.host_app.mobile/src/org/flowerplatform/flex_client/host_app/mobile/view_edit_server_account/EditServerAccountView.mxml b/org.flowerplatform.flex_client.host_app.mobile/src/org/flowerplatform/flex_client/host_app/mobile/view_edit_server_account/EditServerAccountView.mxml
index 5b6c1ed0..8b7f5923 100644
--- a/org.flowerplatform.flex_client.host_app.mobile/src/org/flowerplatform/flex_client/host_app/mobile/view_edit_server_account/EditServerAccountView.mxml
+++ b/org.flowerplatform.flex_client.host_app.mobile/src/org/flowerplatform/flex_client/host_app/mobile/view_edit_server_account/EditServerAccountView.mxml
@@ -228,10 +228,6 @@
saveAccount(false, EDIT_ACCOUNT);
}
}
-
- public function additionalCloseHandler():void {
- // nothing to do
- }
]]>
diff --git a/org.flowerplatform.flex_client.host_app.mobile/src/org/flowerplatform/flex_client/host_app/mobile/view_server_account/ServerAccountsView.mxml b/org.flowerplatform.flex_client.host_app.mobile/src/org/flowerplatform/flex_client/host_app/mobile/view_server_account/ServerAccountsView.mxml
index 86c833d2..fbfc8cf2 100644
--- a/org.flowerplatform.flex_client.host_app.mobile/src/org/flowerplatform/flex_client/host_app/mobile/view_server_account/ServerAccountsView.mxml
+++ b/org.flowerplatform.flex_client.host_app.mobile/src/org/flowerplatform/flex_client/host_app/mobile/view_server_account/ServerAccountsView.mxml
@@ -111,10 +111,6 @@
public function closeView():void {
FlexUtilGlobals.getInstance().popupHandlerFactory.removePopup(this);
}
-
- public function additionalCloseHandler():void {
- // nothing to do
- }
]]>
diff --git a/org.flowerplatform.flex_client.host_app/WebContent/main.jsp b/org.flowerplatform.flex_client.host_app/WebContent/main.jsp
index de27a8ea..e5e7cb59 100644
--- a/org.flowerplatform.flex_client.host_app/WebContent/main.jsp
+++ b/org.flowerplatform.flex_client.host_app/WebContent/main.jsp
@@ -39,7 +39,7 @@
diff --git a/org.flowerplatform.flex_client.host_app/src/FlexHostApp.mxml b/org.flowerplatform.flex_client.host_app/src/FlexHostApp.mxml
index 1a490f56..487d690f 100644
--- a/org.flowerplatform.flex_client.host_app/src/FlexHostApp.mxml
+++ b/org.flowerplatform.flex_client.host_app/src/FlexHostApp.mxml
@@ -21,7 +21,7 @@ license-end
-
@@ -48,6 +48,7 @@ license-end
-
-
diff --git a/org.flowerplatform.flex_client.mindmap/src/org/flowerplatform/flex_client/mindmap/MindMapEditorDiagramShell.as b/org.flowerplatform.flex_client.mindmap/src/org/flowerplatform/flex_client/mindmap/MindMapEditorDiagramShell.as
index dc29cd9f..e80b4df0 100644
--- a/org.flowerplatform.flex_client.mindmap/src/org/flowerplatform/flex_client/mindmap/MindMapEditorDiagramShell.as
+++ b/org.flowerplatform.flex_client.mindmap/src/org/flowerplatform/flex_client/mindmap/MindMapEditorDiagramShell.as
@@ -49,7 +49,6 @@ package org.flowerplatform.flex_client.mindmap {
tools.push(InplaceEditorTool);
}
registerTools(tools);
-
}
override public function getRootNodeX(context:DiagramShellContext, rootNode:Object):Number {
diff --git a/org.flowerplatform.flex_client.mindmap/src/org/flowerplatform/flex_client/mindmap/action/AbstractEditNodePropertyInDialogAction.as b/org.flowerplatform.flex_client.mindmap/src/org/flowerplatform/flex_client/mindmap/action/AbstractEditNodePropertyInDialogAction.as
index 8275aeb3..56b85d71 100644
--- a/org.flowerplatform.flex_client.mindmap/src/org/flowerplatform/flex_client/mindmap/action/AbstractEditNodePropertyInDialogAction.as
+++ b/org.flowerplatform.flex_client.mindmap/src/org/flowerplatform/flex_client/mindmap/action/AbstractEditNodePropertyInDialogAction.as
@@ -40,7 +40,8 @@ package org.flowerplatform.flex_client.mindmap.action {
protected function editProperty(property:String, title:String):void {
var selectedNode:Node = Node(selection.getItemAt(0));
- var richTextWithRendererView:RichTextWithRendererView = new RichTextWithRendererView();
+ var richTextWithRendererView:RichTextWithRendererView = new RichTextWithRendererView();
+ richTextWithRendererView.icon = icon;
richTextWithRendererView.node = selectedNode;
richTextWithRendererView.showRendererArea = false;
richTextWithRendererView.text = selectedNode.properties[property];
@@ -58,7 +59,6 @@ package org.flowerplatform.flex_client.mindmap.action {
.setViewContent(richTextWithRendererView)
.setWidth(500)
.setHeight(300)
- .setIcon(icon)
.show();
}
diff --git a/org.flowerplatform.flex_client.mindmap/src/org/flowerplatform/flex_client/mindmap/renderer/NodeRenderer.mxml b/org.flowerplatform.flex_client.mindmap/src/org/flowerplatform/flex_client/mindmap/renderer/NodeRenderer.mxml
index 3079a0a8..12540f81 100644
--- a/org.flowerplatform.flex_client.mindmap/src/org/flowerplatform/flex_client/mindmap/renderer/NodeRenderer.mxml
+++ b/org.flowerplatform.flex_client.mindmap/src/org/flowerplatform/flex_client/mindmap/renderer/NodeRenderer.mxml
@@ -6,11 +6,8 @@
diff --git a/org.flowerplatform.flex_client.properties/.actionScriptProperties b/org.flowerplatform.flex_client.properties/.actionScriptProperties
index 9dcde00e..4ae0d400 100644
--- a/org.flowerplatform.flex_client.properties/.actionScriptProperties
+++ b/org.flowerplatform.flex_client.properties/.actionScriptProperties
@@ -1,5 +1,5 @@
-
+
diff --git a/org.flowerplatform.flex_client.properties/.flexLibProperties b/org.flowerplatform.flex_client.properties/.flexLibProperties
index e2fb37ad..e4f19c76 100644
--- a/org.flowerplatform.flex_client.properties/.flexLibProperties
+++ b/org.flowerplatform.flex_client.properties/.flexLibProperties
@@ -1,11 +1,18 @@
-
-
+
+
+
+
+
+
+
+
+
diff --git a/org.flowerplatform.flex_client.properties/public-resources/.gitignore b/org.flowerplatform.flex_client.properties/public-resources/.gitignore
index 67e8ead1..8934b89f 100644
--- a/org.flowerplatform.flex_client.properties/public-resources/.gitignore
+++ b/org.flowerplatform.flex_client.properties/public-resources/.gitignore
@@ -1 +1,2 @@
/swc
+/swc
diff --git a/org.flowerplatform.flex_client.properties/src/org/flowerplatform/flex_client/properties/CreateNodeView.mxml b/org.flowerplatform.flex_client.properties/src/org/flowerplatform/flex_client/properties/CreateNodeView.mxml
index 27ba60a6..8eb7c44c 100644
--- a/org.flowerplatform.flex_client.properties/src/org/flowerplatform/flex_client/properties/CreateNodeView.mxml
+++ b/org.flowerplatform.flex_client.properties/src/org/flowerplatform/flex_client/properties/CreateNodeView.mxml
@@ -2,20 +2,26 @@
-
-
+ creationComplete="creationCompleteHandler(event)"
+ implements="org.flowerplatform.flexutil.view_content_host.IViewContent, mx.managers.IFocusManagerComponent">
+
+
+
+
{
+ return null;
+ }
+
+ protected function okHandler(evt:MouseEvent = null):void {
var propertiesToSetAfterAddingNode:ArrayList = new ArrayList();
var context:ServiceContext = new ServiceContext();
context.add("type", nodeType);
@@ -143,17 +166,21 @@
});
}
+ protected function cancelHandler():void {
+ FlexUtilGlobals.getInstance().popupHandlerFactory.removePopup(this);
+ }
+
]]>
-
+
-
-
-
-
-
+
+
+
+
+
diff --git a/org.flowerplatform.flex_client.properties/src/org/flowerplatform/flex_client/properties/PropertiesPlugin.as b/org.flowerplatform.flex_client.properties/src/org/flowerplatform/flex_client/properties/PropertiesPlugin.as
index 24b5491c..0da1a6ac 100644
--- a/org.flowerplatform.flex_client.properties/src/org/flowerplatform/flex_client/properties/PropertiesPlugin.as
+++ b/org.flowerplatform.flex_client.properties/src/org/flowerplatform/flex_client/properties/PropertiesPlugin.as
@@ -21,6 +21,7 @@ package org.flowerplatform.flex_client.properties {
import org.flowerplatform.flexutil.FactoryWithInitialization;
import org.flowerplatform.flexutil.FlexUtilGlobals;
import org.flowerplatform.flexutil.Utils;
+ import org.flowerplatform.flexutil.controller.TypeDescriptorRegistry;
/**
* @author Razvan Tache
@@ -32,6 +33,8 @@ package org.flowerplatform.flex_client.properties {
public var propertyRendererClasses:Dictionary = new Dictionary();
public var currentSelection:IList;
+
+ public var nodeTypeDescriptorRegistry:TypeDescriptorRegistry;
public static function getInstance():PropertiesPlugin {
return INSTANCE;
@@ -44,10 +47,16 @@ package org.flowerplatform.flex_client.properties {
}
INSTANCE = this;
+ if (CorePlugin.getInstance() != null) {
+ nodeTypeDescriptorRegistry = CorePlugin.getInstance().nodeTypeDescriptorRegistry;
+ }
+
FlexUtilGlobals.getInstance().composedViewProvider.addViewProvider(new PropertiesViewProvider());
- CorePlugin.getInstance().editorClassFactoryActionProvider.addActionClass(ShowPropertiesAction);
- CorePlugin.getInstance().getEditorClassFactoryActionProvider().addActionClass(NewComposedAction);
+ if (CorePlugin.getInstance() != null) {
+ CorePlugin.getInstance().editorClassFactoryActionProvider.addActionClass(ShowPropertiesAction);
+ CorePlugin.getInstance().getEditorClassFactoryActionProvider().addActionClass(NewComposedAction);
+ }
}
override public function start():void {
diff --git a/org.flowerplatform.flex_client.properties/src/org/flowerplatform/flex_client/properties/PropertiesView.mxml b/org.flowerplatform.flex_client.properties/src/org/flowerplatform/flex_client/properties/PropertiesView.mxml
index ef4e975e..a790dbe9 100644
--- a/org.flowerplatform.flex_client.properties/src/org/flowerplatform/flex_client/properties/PropertiesView.mxml
+++ b/org.flowerplatform.flex_client.properties/src/org/flowerplatform/flex_client/properties/PropertiesView.mxml
@@ -34,6 +34,10 @@
import org.flowerplatform.flexutil.view_content_host.IViewHost;
protected var _viewHost:IViewHost;
+
+ protected var _nodes:IList;
+
+ protected var _commitEachPropertyAutomatically:Boolean = true;
private var currentPropertyDescriptorsDisplayed:IList;
@@ -67,8 +71,17 @@
public function getActions(selection:IList):Vector. {
return null;
}
-
- private function selectionChangedHandler(event:SelectionChangedEvent):void {
+
+ public function set commitEachPropertyAutomatically(value:Boolean):void {
+ _commitEachPropertyAutomatically = value;
+ }
+
+ public function get nodes():IList {
+ return _nodes;
+ }
+
+ public function set nodes(nodeList:IList):void {
+ _nodes = nodeList;
var i:int;
// remove listeners from previous selection
@@ -93,17 +106,17 @@
}
(recycledRenderers[type] as Array).push(propertyItemRenderer);
}
-
+
label.text = "";
-
- if (event.selection == null || event.selection.length == 0 || !(event.selection.getItemAt(0) is Node)) { // happens when changing active view
+
+ if (nodeList == null || nodeList.length == 0 || !(nodeList.getItemAt(0) is Node)) { // happens when changing active view
currentPropertyDescriptorsDisplayed = null;
propertyForm.removeAllElements();
return;
}
// get new selected node
- var node:Node = Node(event.selection.getItemAt(0));
+ var node:Node = Node(nodeList.getItemAt(0));
if (node.parent == null && node.children == null) { // root node, don't populate with properties
currentPropertyDescriptorsDisplayed = null;
@@ -112,16 +125,16 @@
}
// update label
- var titleProvider:GenericValueProviderFromDescriptor = NodeControllerUtils.getTitleProvider(CorePlugin.getInstance().nodeTypeDescriptorRegistry, node);
+ /* var titleProvider:GenericValueProviderFromDescriptor = NodeControllerUtils.getTitleProvider(PropertiesPlugin.getInstance().nodeTypeDescriptorRegistry, node);
label.text = String(titleProvider.getValue(node));
- label.maxWidth = UIComponent(this).width;
-
+ label.maxWidth = UIComponent(this).width; */
+
// store new selection
- PropertiesPlugin.getInstance().currentSelection = new ArrayList(event.selection.toArray());
+ PropertiesPlugin.getInstance().currentSelection = new ArrayList(nodeList.toArray());
// get properties to display
- var newPropertyDescriptorsToDisplay:IList = CorePlugin.getInstance().nodeTypeDescriptorRegistry.getExpectedTypeDescriptor(node.type).getAdditiveControllers(PropertiesConstants.PROPERTY_DESCRIPTOR, node);
-
+ var newPropertyDescriptorsToDisplay:IList = PropertiesPlugin.getInstance().nodeTypeDescriptorRegistry.getExpectedTypeDescriptor(node.type).getAdditiveControllers(PropertiesConstants.PROPERTY_DESCRIPTOR, node);
+
// if same descriptors -> no need to recalculate renderers, only set new node properties
if (currentPropertyDescriptorsDisplayed != newPropertyDescriptorsToDisplay) {
propertyForm.removeAllElements();
@@ -131,16 +144,16 @@
for (i = 0; i < newPropertyDescriptorsToDisplay.length; i++) {
var propertyRenderer:PropertyItemRenderer;
var propertyDescriptor:PropertyDescriptor = PropertyDescriptor(ObjectUtil.copy(newPropertyDescriptorsToDisplay.getItemAt(i)));
-
+
if (propertyDescriptor.category != currentCategory) {
// display category renderer
var categoryItem:CategoryPropertyRenderer = new CategoryPropertyRenderer();
categoryItem.label = propertyDescriptor.category;
propertyForm.addElement(categoryItem);
-
+
currentCategory = propertyDescriptor.category;
}
-
+
var renderersToReuse:Array = recycledRenderers[propertyDescriptor.type] as Array;
if (renderersToReuse != null && renderersToReuse.length > 0) {
// there is already created a renderer for this type of property descriptor, reuse it
@@ -151,6 +164,8 @@
}
propertyForm.addElement(propertyRenderer);
propertyRenderer.data = propertyDescriptor;
+ if (!_commitEachPropertyAutomatically)
+ propertyRenderer.node = nodes.getItemAt(0) as Node;
}
}
@@ -159,7 +174,7 @@
// get values from node properties
nodeUpdatedHandler(new NodeUpdatedEvent(node));
-
+
// add listeners to current selection
var currentSelection:IList = PropertiesPlugin.getInstance().currentSelection;
if (currentSelection != null) {
@@ -168,6 +183,10 @@
}
}
}
+
+ private function selectionChangedHandler(event:SelectionChangedEvent):void {
+ nodes = event.selection;
+ }
private function nodeUpdatedHandler(event:NodeUpdatedEvent):void {
var node:Node = event.node;
@@ -189,10 +208,6 @@
}
}
- public function additionalCloseHandler():void {
- // nothing to do
- }
-
]]>
diff --git a/org.flowerplatform.flex_client.properties/src/org/flowerplatform/flex_client/properties/PropertyItemRenderer.mxml b/org.flowerplatform.flex_client.properties/src/org/flowerplatform/flex_client/properties/PropertyItemRenderer.mxml
index 0a678d3f..f5770e6c 100644
--- a/org.flowerplatform.flex_client.properties/src/org/flowerplatform/flex_client/properties/PropertyItemRenderer.mxml
+++ b/org.flowerplatform.flex_client.properties/src/org/flowerplatform/flex_client/properties/PropertyItemRenderer.mxml
@@ -12,6 +12,7 @@
import mx.core.UIComponent;
import mx.events.FlexEvent;
+ import org.flowerplatform.flex_client.core.editor.remote.Node;
import org.flowerplatform.flex_client.properties.property_renderer.BasicPropertyRenderer;
import org.flowerplatform.flex_client.properties.remote.PropertyDescriptor;
import org.flowerplatform.flexutil.FactoryWithInitialization;
@@ -24,6 +25,10 @@
private var basicPropertyRenderer:BasicPropertyRenderer;
+ public function set node(_node:Node) {
+ basicPropertyRenderer._node = _node;
+ }
+
public function get data():Object {
return _data;
}
diff --git a/org.flowerplatform.flex_client.properties/src/org/flowerplatform/flex_client/properties/action/AddNodeAction.as b/org.flowerplatform.flex_client.properties/src/org/flowerplatform/flex_client/properties/action/AddNodeAction.as
index b3287af1..452a36dd 100644
--- a/org.flowerplatform.flex_client.properties/src/org/flowerplatform/flex_client/properties/action/AddNodeAction.as
+++ b/org.flowerplatform.flex_client.properties/src/org/flowerplatform/flex_client/properties/action/AddNodeAction.as
@@ -19,7 +19,6 @@
package org.flowerplatform.flex_client.properties.action {
import mx.collections.IList;
- import mx.utils.StringUtil;
import org.flowerplatform.flex_client.core.CoreConstants;
import org.flowerplatform.flex_client.core.CorePlugin;
@@ -85,11 +84,8 @@ package org.flowerplatform.flex_client.properties.action {
createNodeView.diagramShellContext = diagramShellContext;
FlexUtilGlobals.getInstance().popupHandlerFactory.createPopupHandler()
- .setTitle(Resources.getMessage("action.new.label", [label]))
- .setIcon(Resources.addIcon)
+ .setTitle(Resources.getMessage("new.file.folder"))
.setViewContent(createNodeView)
- .setHeight(200)
- .setWidth(400)
.show();
} else {
CorePlugin.getInstance().serviceLocator.invoke("nodeService.addChild", [parentNode.fullNodeId, context],
diff --git a/org.flowerplatform.flex_client.properties/src/org/flowerplatform/flex_client/properties/property_renderer/BasicPropertyRenderer.as b/org.flowerplatform.flex_client.properties/src/org/flowerplatform/flex_client/properties/property_renderer/BasicPropertyRenderer.as
index 639a9a73..b2859065 100644
--- a/org.flowerplatform.flex_client.properties/src/org/flowerplatform/flex_client/properties/property_renderer/BasicPropertyRenderer.as
+++ b/org.flowerplatform.flex_client.properties/src/org/flowerplatform/flex_client/properties/property_renderer/BasicPropertyRenderer.as
@@ -5,15 +5,15 @@ package org.flowerplatform.flex_client.properties.property_renderer {
import mx.binding.utils.BindingUtils;
- import spark.components.CheckBox;
- import spark.components.DataRenderer;
- import spark.layouts.HorizontalLayout;
-
import org.flowerplatform.flex_client.core.CorePlugin;
import org.flowerplatform.flex_client.core.editor.remote.Node;
import org.flowerplatform.flex_client.properties.PropertiesPlugin;
import org.flowerplatform.flex_client.properties.remote.PropertyDescriptor;
import org.flowerplatform.flex_client.resources.Resources;
+
+ import spark.components.CheckBox;
+ import spark.components.DataRenderer;
+ import spark.layouts.HorizontalLayout;
/**
* @author Razvan Tache
@@ -28,7 +28,9 @@ package org.flowerplatform.flex_client.properties.property_renderer {
public var savePropertyEnabled:Boolean = true;
public var changeCheckBox:CheckBox = new CheckBox();
-
+
+ public var _node:Node;
+
public function BasicPropertyRenderer() {
super();
layout = new HorizontalLayout;
@@ -69,7 +71,11 @@ package org.flowerplatform.flex_client.properties.property_renderer {
return true;
}
- protected function saveProperty():void {
+ protected function saveProperty():void {
+ if (_node != null) {
+ _node.properties[propertyDescriptor.name] = getValue();
+ return;
+ }
if (savePropertyEnabled && !propertyDescriptor.readOnly) {
if (!validPropertyValue()) {
return;
diff --git a/org.flowerplatform.flex_client.properties/src/org/flowerplatform/flex_client/properties/property_renderer/DatePropertyRenderer.as b/org.flowerplatform.flex_client.properties/src/org/flowerplatform/flex_client/properties/property_renderer/DatePropertyRenderer.as
index d2816660..1a104d6f 100644
--- a/org.flowerplatform.flex_client.properties/src/org/flowerplatform/flex_client/properties/property_renderer/DatePropertyRenderer.as
+++ b/org.flowerplatform.flex_client.properties/src/org/flowerplatform/flex_client/properties/property_renderer/DatePropertyRenderer.as
@@ -17,14 +17,12 @@
* license-end
*/
package org.flowerplatform.flex_client.properties.property_renderer {
- import mx.binding.utils.BindingUtils;
import mx.events.FlexEvent;
import spark.formatters.DateTimeFormatter;
/**
* @author Sebastian Solomon
- * @author Cristina Constantinescu
*/
public class DatePropertyRenderer extends StringPropertyRenderer {
@@ -33,16 +31,11 @@ package org.flowerplatform.flex_client.properties.property_renderer {
}
override protected function creationCompleteHandler(event:FlexEvent):void {
- BindingUtils.bindSetter(updateDate, data, "value");
- }
-
- private function updateDate(newValue:Object):void {
- if (newValue is Date) {
+ if (data.value is Date) {
var dtf:DateTimeFormatter = new DateTimeFormatter();
dtf.dateTimePattern = "yyyy-MM-dd HH:mm:ss";
- propertyValue.text = dtf.format(newValue);
+ propertyValue.text = dtf.format(data.value);
}
-
}
}
diff --git a/org.flowerplatform.flex_client.properties/src/org/flowerplatform/flex_client/properties/property_renderer/FileSizePropertyRenderer.mxml b/org.flowerplatform.flex_client.properties/src/org/flowerplatform/flex_client/properties/property_renderer/FileSizePropertyRenderer.mxml
index bfd254e0..7c4c7b6d 100644
--- a/org.flowerplatform.flex_client.properties/src/org/flowerplatform/flex_client/properties/property_renderer/FileSizePropertyRenderer.mxml
+++ b/org.flowerplatform.flex_client.properties/src/org/flowerplatform/flex_client/properties/property_renderer/FileSizePropertyRenderer.mxml
@@ -1,44 +1,39 @@
+ xmlns:ns="org.flowerplatform.flex_client.properties.property_renderer.*"
+ creationComplete="creationCompleteHandler(event)">
-
+
+
diff --git a/org.flowerplatform.flex_client.resources/.actionScriptProperties b/org.flowerplatform.flex_client.resources/.actionScriptProperties
index d9e7e4c8..7140a28f 100644
--- a/org.flowerplatform.flex_client.resources/.actionScriptProperties
+++ b/org.flowerplatform.flex_client.resources/.actionScriptProperties
@@ -1,5 +1,5 @@
-
+
diff --git a/org.flowerplatform.flex_client.resources/.gitignore b/org.flowerplatform.flex_client.resources/.gitignore
index 5e56e040..167fb2c0 100644
--- a/org.flowerplatform.flex_client.resources/.gitignore
+++ b/org.flowerplatform.flex_client.resources/.gitignore
@@ -1 +1,2 @@
/bin
+/bin
diff --git a/org.flowerplatform.flexdiagram/.actionScriptProperties b/org.flowerplatform.flexdiagram/.actionScriptProperties
index 50d40e42..86d83608 100644
--- a/org.flowerplatform.flexdiagram/.actionScriptProperties
+++ b/org.flowerplatform.flexdiagram/.actionScriptProperties
@@ -1,6 +1,6 @@
-
-
+
+
@@ -21,6 +21,7 @@
+
diff --git a/org.flowerplatform.flexdiagram/.gitignore b/org.flowerplatform.flexdiagram/.gitignore
index 167fb2c0..bca9b393 100644
--- a/org.flowerplatform.flexdiagram/.gitignore
+++ b/org.flowerplatform.flexdiagram/.gitignore
@@ -1,2 +1,3 @@
/bin
/bin
+/bin
diff --git a/org.flowerplatform.flexdiagram/src/org/flowerplatform/flexdiagram/controller/visual_children/AbsoluteLayoutVisualChildrenController.as b/org.flowerplatform.flexdiagram/src/org/flowerplatform/flexdiagram/controller/visual_children/AbsoluteLayoutVisualChildrenController.as
index 458bb319..3a8245f0 100644
--- a/org.flowerplatform.flexdiagram/src/org/flowerplatform/flexdiagram/controller/visual_children/AbsoluteLayoutVisualChildrenController.as
+++ b/org.flowerplatform.flexdiagram/src/org/flowerplatform/flexdiagram/controller/visual_children/AbsoluteLayoutVisualChildrenController.as
@@ -59,11 +59,6 @@ package org.flowerplatform.flexdiagram.controller.visual_children {
var scrollRect:Rectangle = IAbsoluteLayoutRenderer(parentRenderer).getViewportRect();
var noNeedToRefreshRect:Rectangle = IAbsoluteLayoutRenderer(parentRenderer).noNeedToRefreshRect;
-
- if (IVisualChildrenRefreshable(parentRenderer).shouldRefreshVisualChildren) {
- refreshContentRect(context, parentModel);
- }
-
if (!IVisualChildrenRefreshable(parentRenderer).shouldRefreshVisualChildren
&& noNeedToRefreshRect != null && noNeedToRefreshRect.containsRect(scrollRect)) {
return;
@@ -75,6 +70,13 @@ package org.flowerplatform.flexdiagram.controller.visual_children {
var modelsToAdd:Vector.