diff --git a/ganttzk/src/main/java/org/zkoss/ganttz/CommandContextualized.java b/ganttzk/src/main/java/org/zkoss/ganttz/CommandContextualized.java index e1c2a440e..57bacfd39 100644 --- a/ganttzk/src/main/java/org/zkoss/ganttz/CommandContextualized.java +++ b/ganttzk/src/main/java/org/zkoss/ganttz/CommandContextualized.java @@ -39,6 +39,8 @@ class CommandContextualized { private final IContext context; + private Button button; + private CommandContextualized(ICommand command, IContext context) { this.command = command; this.context = context; @@ -49,6 +51,9 @@ class CommandContextualized { } Button toButton() { + if (button != null) { + return button; + } Button result = new Button(); if (StringUtils.isEmpty(command.getImage())) { result.setLabel(command.getName()); @@ -63,7 +68,11 @@ class CommandContextualized { doAction(); } }); + button = result; return result; } + public ICommand getCommand() { + return command; + } } diff --git a/ganttzk/src/main/java/org/zkoss/ganttz/Planner.java b/ganttzk/src/main/java/org/zkoss/ganttz/Planner.java index 8e85479ca..dc8d35a02 100644 --- a/ganttzk/src/main/java/org/zkoss/ganttz/Planner.java +++ b/ganttzk/src/main/java/org/zkoss/ganttz/Planner.java @@ -691,4 +691,12 @@ public class Planner extends HtmlMacroComponent { return isFlattenTree; } + public Button findCommandComponent(String name) { + for (CommandContextualized c : contextualizedGlobalCommands) { + if (c.getCommand().getName().equals(name)) { + return c.toButton(); + } + } + return null; + } } diff --git a/ganttzk/src/main/resources/web/ganttz/zul/plannerLayout.zul b/ganttzk/src/main/resources/web/ganttz/zul/plannerLayout.zul index 00e332e12..5f3588459 100644 --- a/ganttzk/src/main/resources/web/ganttz/zul/plannerLayout.zul +++ b/ganttzk/src/main/resources/web/ganttz/zul/plannerLayout.zul @@ -29,6 +29,8 @@ planner = self; + +