Author: vjrj Date: 2009-05-24 20:56:49 +0200 (Sun, 24 May 2009) New Revision: 1113 Added: trunk/src/main/java/org/ourproject/kune/platf/client/actions/ui/AbstractGuiItem.java trunk/src/main/java/org/ourproject/kune/platf/client/actions/ui/AbstractMenuItem.java trunk/src/main/java/org/ourproject/kune/platf/client/actions/ui/AbstractSeparator.java trunk/src/main/java/org/ourproject/kune/platf/client/actions/ui/AbstractUIActionDescriptor.java trunk/src/main/java/org/ourproject/kune/platf/client/actions/ui/ButtonDescriptor.java trunk/src/main/java/org/ourproject/kune/platf/client/actions/ui/DefaultMenuCheckItem.java trunk/src/main/java/org/ourproject/kune/platf/client/actions/ui/DefaultMenuItem.java trunk/src/main/java/org/ourproject/kune/platf/client/actions/ui/MenuCheckItemDescriptor.java trunk/src/main/java/org/ourproject/kune/platf/client/actions/ui/MenuDescriptor.java trunk/src/main/java/org/ourproject/kune/platf/client/actions/ui/MenuItemDescriptor.java trunk/src/main/java/org/ourproject/kune/platf/client/actions/ui/MenuRadioDescriptor.java trunk/src/main/java/org/ourproject/kune/platf/client/actions/ui/MenuSeparator.java trunk/src/main/java/org/ourproject/kune/platf/client/actions/ui/PushButton.java trunk/src/main/java/org/ourproject/kune/platf/client/actions/ui/PushButtonDescriptor.java trunk/src/main/java/org/ourproject/kune/platf/client/actions/ui/ToolbarSeparator.java Removed: trunk/src/main/java/org/ourproject/kune/platf/client/actions/ActionMap.java trunk/src/main/java/org/ourproject/kune/platf/client/actions/ui/CheckButton.java Modified: trunk/DEV-GUIDE trunk/TODO trunk/src/main/java/org/ourproject/kune/platf/client/actions/InputMap.java trunk/src/main/java/org/ourproject/kune/platf/client/actions/ui/AbstractButton.java trunk/src/main/java/org/ourproject/kune/platf/client/actions/ui/DefaultButton.java trunk/src/main/java/org/ourproject/kune/platf/client/actions/ui/TestButton.java trunk/src/main/java/org/ourproject/kune/platf/client/services/PlatformModule.java Log: Incomplete - task New Action class (adapted from Swing) to replace ActionDescription Modified: trunk/DEV-GUIDE =================================================================== --- trunk/DEV-GUIDE 2009-05-21 18:31:14 UTC (rev 1112) +++ trunk/DEV-GUIDE 2009-05-24 18:56:49 UTC (rev 1113) @@ -172,6 +172,10 @@ Also you have to set the variable M2_REPO (Eclipse Preferences > Java > Build Path > Classpath Variables > New) to the location of your local maven repo (in our case /home/ouruser/.m2/repository). +Is recommended that you use the PMD plugin: +http://pmd.sourceforge.net/ +http://pmd.sourceforge.net/eclipse/ + Useful info about gwt and Eclipse: http://code.google.com/p/gwt-examples/wiki/gwtEclipseFaqs @@ -214,6 +218,10 @@ http://docs.codehaus.org/display/PICO/Good+Citizen +Is recommended that you use the PMD plugin in eclipse: +http://pmd.sourceforge.net/ +http://pmd.sourceforge.net/eclipse/ + ==Use of mylyn in eclipse== To use mylyn and to track the kune issues from eclipse, you have to add a "Web Repository" and select "ASM (gforge" with server: http://ourproject.org. Modified: trunk/TODO =================================================================== --- trunk/TODO 2009-05-21 18:31:14 UTC (rev 1112) +++ trunk/TODO 2009-05-24 18:56:49 UTC (rev 1113) @@ -13,14 +13,13 @@ * SHORT-TERM (URGENT) ** New Action class *** Things to support -**** menu and toolbars separators (space, bar, expand) -**** index position insertion (for buttons added by other plugins) -**** menu button property change (icon, text). If we select a menu option, maybe this require a change in the menu button. -**** confirmation of actions yes, no.... (confirmation title, text, and onNotConfirmed) -**** tongle/push buttons with isPressed (initially and later)... -**** position id, that is, if we have some toolbars and a list of actions, how to select which action in which toolbar. -**** radio menu (with group) and check menu item - +**** [X] menu and toolbars separators (space, bar, expand) +**** [X] index position insertion (for buttons added by other plugins) +**** [X] menu button property change (icon, text). If we select a menu option, maybe this require a change in the menu button. +**** [X] confirmation of actions yes, no.... (confirmation title, text, and onNotConfirmed) +**** [X] tongle/push buttons with isPressed (initially and later)... +**** [X] position id, that is, if we have some toolbars and a list of actions, how to select which action in which toolbar. +**** [X] radio menu (with group) and check menu item ** maven-gwt problem (using another plugin from codehaus) mvn com.totsp.gwt:maven-googlewebtoolkit2-plugin:compile and so on. @@ -129,6 +128,7 @@ ** vjrj <v> IconHyperlink.java and IconLabel.java to gwt1.5 * MID-TERM +** TODO <v> encourage use of free formats ** TODO <v> study opensocial, openstack and related http://developer.yahoo.net/blog/archives/2008/12/the_open_stack.html ** TODO <v> Use of command key ⌘ for Mac shortcuts Deleted: trunk/src/main/java/org/ourproject/kune/platf/client/actions/ActionMap.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/platf/client/actions/ActionMap.java 2009-05-21 18:31:14 UTC (rev 1112) +++ trunk/src/main/java/org/ourproject/kune/platf/client/actions/ActionMap.java 2009-05-24 18:56:49 UTC (rev 1113) @@ -1,194 +0,0 @@ -/* ActionMap.java -- - Copyright (C) 2002, 2004, 2006, Free Software Foundation, Inc. - -This file is part of GNU Classpath. - -GNU Classpath is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2, or (at your option) -any later version. - -GNU Classpath is distributed in the hope that it will be useful, but -WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -General Public License for more details. - -You should have received a copy of the GNU General Public License -along with GNU Classpath; see the file COPYING. If not, write to the -Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301 USA. - -Linking this library statically or dynamically with other modules is -making a combined work based on this library. Thus, the terms and -conditions of the GNU General Public License cover the whole -combination. - -As a special exception, the copyright holders of this library give you -permission to link this library with independent modules to produce an -executable, regardless of the license terms of these independent -modules, and to copy and distribute the resulting executable under -terms of your choice, provided that you also meet, for each linked -independent module, the terms and conditions of the license of that -module. An independent module is a module which is not derived from -or based on this library. If you modify this library, you may extend -this exception to your version of the library, but you are not -obligated to do so. If you do not wish to do so, delete this -exception statement from your version. */ - -package org.ourproject.kune.platf.client.actions; - -import java.util.Arrays; -import java.util.HashMap; -import java.util.HashSet; -import java.util.Map; -import java.util.Set; - -/** - * Maps arbitrary keys (usually Strings) to {@link Action} instances. This is - * used in combination with {@link InputMap}s. - * - * If a component receives an input event, this is looked up in the component's - * <code>InputMap</code>. The result is an object which serves as a key to the - * components <code>ActionMap</code>. Finally the <code>Action</code> that is - * stored is executed. - * - * @author Andrew Selkirk - * @author Adapted version for GWT (C) The kune development team - * @author Michael Koch - */ -public class ActionMap { - - /** - * actionMap - */ - private final Map<Object, Action> actionMap = new HashMap<Object, Action>(); - - /** - * parent - */ - private ActionMap parent; - - /** - * Creates a new <code>ActionMap</code> instance. - */ - public ActionMap() { - // Nothing to do here. - } - - /** - * Returns all keys of entries in this <code>ActionMap</code> and all its - * parents. - * - * @return an array of keys - */ - // @PMD:REVIEWED:ReturnEmptyArrayRatherThanNull: by vjrj on 21/05/09 15:03 - public Object[] allKeys() { - Set<Object> set = new HashSet<Object>(); - - if (parent != null) { - set.addAll(Arrays.asList(parent.allKeys())); - } - - set.addAll(actionMap.keySet()); - if (set.size() != 0) { - return set.toArray(); - } - return null; - } - - /** - * Clears the <code>ActionMap</code>. - */ - public void clear() { - actionMap.clear(); - } - - /** - * Returns an action associated with an object. - * - * @param key - * the key of the enty - * - * @return the action associated with key, may be null - */ - public Action get(final Object key) { - Object result = actionMap.get(key); - - if (result == null && parent != null) { - result = parent.get(key); - } - - return (Action) result; - } - - /** - * Returns the parent of this <code>ActionMap</code>. - * - * @return the parent, may be null. - */ - public ActionMap getParent() { - return parent; - } - - /** - * Returns all keys of entries in this <code>ActionMap</code>. - * - * @return an array of keys - */ - // @PMD:REVIEWED:ReturnEmptyArrayRatherThanNull: by vjrj on 21/05/09 15:03 - public Object[] keys() { - if (size() != 0) { - return actionMap.keySet().toArray(); - } - return null; - } - - /** - * Puts a new <code>Action</code> into the <code>ActionMap</code>. If action - * is null an existing entry will be removed. - * - * @param key - * the key for the entry - * @param action - * the action. - */ - public void put(final Object key, final Action action) { - if (action == null) { - actionMap.remove(key); - } else { - actionMap.put(key, action); - } - } - - /** - * Remove an entry from the <code>ActionMap</code>. - * - * @param key - * the key of the entry to remove - */ - public void remove(final Object key) { - actionMap.remove(key); - } - - /** - * Sets a parent for this <code>ActionMap</code>. - * - * @param parentMap - * the new parent - */ - public void setParent(final ActionMap parentMap) { - if (parentMap != this) { - parent = parentMap; - } - } - - /** - * Returns the number of entries in this <code>ActionMap</code>. - * - * @return the number of entries - */ - public int size() { - return actionMap.size(); - } - -} Modified: trunk/src/main/java/org/ourproject/kune/platf/client/actions/InputMap.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/platf/client/actions/InputMap.java 2009-05-21 18:31:14 UTC (rev 1112) +++ trunk/src/main/java/org/ourproject/kune/platf/client/actions/InputMap.java 2009-05-24 18:56:49 UTC (rev 1113) @@ -85,10 +85,10 @@ * @return An array of keys (may be <code>null</code> or have zero length). */ public KeyStroke[] allKeys() { - Set<KeyStroke> set = new HashSet<KeyStroke>(); + final Set<KeyStroke> set = new HashSet<KeyStroke>(); if (parent != null) { - KeyStroke[] parentKeys = parent.allKeys(); + final KeyStroke[] parentKeys = parent.allKeys(); if (parentKeys != null) { set.addAll(Arrays.asList(parentKeys)); } @@ -96,10 +96,10 @@ if (inputMap != null) { set.addAll(inputMap.keySet()); } - if (set.size() == 0) { + if (set.isEmpty()) { return null; } - KeyStroke[] array = new KeyStroke[set.size()]; + final KeyStroke[] array = new KeyStroke[set.size()]; return set.toArray(array); } @@ -122,8 +122,8 @@ * @return The binding associated with the specified keystroke (or * <code>null</code>). */ - public Object get(final KeyStroke keystroke) { - Object result = null; + public Action get(final KeyStroke keystroke) { + Action result = null; if (inputMap != null) { result = inputMap.get(keystroke); } @@ -161,7 +161,7 @@ // @PMD:REVIEWED:ReturnEmptyArrayRatherThanNull: by vjrj on 21/05/09 15:33 public KeyStroke[] keys() { if (inputMap != null) { - KeyStroke[] array = new KeyStroke[size()]; + final KeyStroke[] array = new KeyStroke[size()]; return inputMap.keySet().toArray(array); } return null; Modified: trunk/src/main/java/org/ourproject/kune/platf/client/actions/ui/AbstractButton.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/platf/client/actions/ui/AbstractButton.java 2009-05-21 18:31:14 UTC (rev 1112) +++ trunk/src/main/java/org/ourproject/kune/platf/client/actions/ui/AbstractButton.java 2009-05-24 18:56:49 UTC (rev 1113) @@ -1,59 +1,33 @@ package org.ourproject.kune.platf.client.actions.ui; -import org.ourproject.kune.platf.client.actions.Action; import org.ourproject.kune.platf.client.actions.ActionEvent; -import org.ourproject.kune.platf.client.actions.PropertyChangeEvent; -import org.ourproject.kune.platf.client.actions.PropertyChangeListener; import org.ourproject.kune.platf.client.ui.rte.img.RTEImgResources; import com.google.gwt.libideas.resources.client.ImageResource; -import com.google.gwt.user.client.ui.Composite; import com.gwtext.client.core.EventObject; import com.gwtext.client.widgets.Button; import com.gwtext.client.widgets.event.ButtonListenerAdapter; -public abstract class AbstractButton extends Composite { +public abstract class AbstractButton extends AbstractGuiItem { - private Action action; - private final Button button; + private transient final Button button; - /** - * Listener the button uses to receive PropertyChangeEvents from its Action. - */ - PropertyChangeListener actionPropertyChangeListener; - - public AbstractButton() { + public AbstractButton(final ButtonDescriptor buttonDescriptor) { + super(); button = new Button(); initWidget(button); button.addListener(new ButtonListenerAdapter() { @Override - public void onClick(final Button button, final EventObject e) { + public void onClick(final Button button, final EventObject event) { if (action != null) { - action.actionPerformed(new ActionEvent(button, e.getBrowserEvent())); + action.actionPerformed(new ActionEvent(button, event.getBrowserEvent())); } } }); + setAction(buttonDescriptor.action); } - public void setAction(final Action a) { - if (action != null) { - action.removePropertyChangeListener(actionPropertyChangeListener); - // removeActionListener(action); - if (actionPropertyChangeListener != null) { - action.removePropertyChangeListener(actionPropertyChangeListener); - actionPropertyChangeListener = null; - } - } - - action = a; - configurePropertiesFromAction(action); - if (action != null) { - actionPropertyChangeListener = createActionPropertyChangeListener(a); - action.addPropertyChangeListener(actionPropertyChangeListener); - // addActionListener(action); - } - } - + @Override public void setEnabled(final boolean enabled) { if (enabled) { button.enable(); @@ -62,6 +36,11 @@ } } + public void setEnableToggle(final boolean enableToggle) { + button.setEnableToggle(enableToggle); + } + + @Override public void setIcon(final ImageResource imageResource) { if (imageResource != null) { // FIXME @@ -69,68 +48,20 @@ } } + public void setPressed(final boolean pressed) { + if (button.isPressed() != pressed) { + button.toggle(); + } + } + + @Override public void setText(final String text) { button.setText(text); } + @Override public void setToolTipText(final String tooltip) { button.setTooltip(tooltip); } - protected void configurePropertiesFromAction(final Action a) { - if (a == null) { - setText(null); - setIcon(null); - setEnabled(true); - setToolTipText(null); - } else { - setText((String) (a.getValue(Action.NAME))); - setIcon((ImageResource) (a.getValue(Action.SMALL_ICON))); - setEnabled(a.isEnabled()); - setToolTipText((String) (a.getValue(Action.SHORT_DESCRIPTION))); - // if (a.getValue(Action.MNEMONIC_KEY) != null) { - // setMnemonic(((Integer) - // (a.getValue(Action.MNEMONIC_KEY))).intValue()); - // } - // String actionCommand = (String) - // (a.getValue(Action.ACTION_COMMAND_KEY)); - // - // // Set actionCommand to button's text by default if it is not - // // specified - // if (actionCommand != null) { - // setActionCommand((String) - // (a.getValue(Action.ACTION_COMMAND_KEY))); - // } else { - // setActionCommand(getText()); - // } - } - } - - protected PropertyChangeListener createActionPropertyChangeListener(final Action a) { - return new PropertyChangeListener() { - public void propertyChange(final PropertyChangeEvent e) { - Action act = (Action) (e.getSource()); - if (e.getPropertyName().equals(Action.ENABLED)) { - setEnabled(act.isEnabled()); - } else if (e.getPropertyName().equals(Action.NAME)) { - setText((String) (act.getValue(Action.NAME))); - } else if (e.getPropertyName().equals(Action.SMALL_ICON)) { - setIcon((ImageResource) (act.getValue(Action.SMALL_ICON))); - } else if (e.getPropertyName().equals(Action.SHORT_DESCRIPTION)) { - setToolTipText((String) (act.getValue(Action.SHORT_DESCRIPTION))); - } - // else if (e.getPropertyName().equals(Action.MNEMONIC_KEY)) { - // if (act.getValue(Action.MNEMONIC_KEY) != null) { - // setMnemonic(((Integer) (act.getValue(Action.MNEMONIC_KEY))) - // .intValue()); - // } else if - // (e.getPropertyName().equals(Action.ACTION_COMMAND_KEY)) { - // setActionCommand((String) - // (act.getValue(Action.ACTION_COMMAND_KEY))); - // } - // } - } - }; - } - } Added: trunk/src/main/java/org/ourproject/kune/platf/client/actions/ui/AbstractGuiItem.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/platf/client/actions/ui/AbstractGuiItem.java 2009-05-21 18:31:14 UTC (rev 1112) +++ trunk/src/main/java/org/ourproject/kune/platf/client/actions/ui/AbstractGuiItem.java 2009-05-24 18:56:49 UTC (rev 1113) @@ -0,0 +1,107 @@ +package org.ourproject.kune.platf.client.actions.ui; + +import org.ourproject.kune.platf.client.actions.Action; +import org.ourproject.kune.platf.client.actions.PropertyChangeEvent; +import org.ourproject.kune.platf.client.actions.PropertyChangeListener; + +import com.google.gwt.libideas.resources.client.ImageResource; +import com.google.gwt.user.client.ui.Composite; + +public abstract class AbstractGuiItem extends Composite { + + protected transient Action action; + + /** + * Listener the button uses to receive PropertyChangeEvents from its Action. + */ + protected transient PropertyChangeListener changeListener; + + public void setAction(final Action newaction) { + if (action != null) { + action.removePropertyChangeListener(changeListener); + // removeActionListener(action); + if (changeListener != null) { + action.removePropertyChangeListener(changeListener); + // @PMD:REVIEWED:NullAssignment: by vjrj on 24/05/09 20:05 + changeListener = null; + } + } + + action = newaction; + configurePropertiesFromAction(action); + if (action != null) { + changeListener = createActionPropertyChangeListener(newaction); + action.addPropertyChangeListener(changeListener); + // addActionListener(action); + } + } + + protected void configurePropertiesFromAction(final Action action) { + configurePropertiesFromActionImpl(action); + } + + protected PropertyChangeListener createActionPropertyChangeListener(final Action action) { + return new PropertyChangeListener() { + public void propertyChange(final PropertyChangeEvent event) { + final Action act = (Action) (event.getSource()); + if (event.getPropertyName().equals(Action.ENABLED)) { + setEnabled(act.isEnabled()); + } else if (event.getPropertyName().equals(Action.NAME)) { + setText((String) (act.getValue(Action.NAME))); + } else if (event.getPropertyName().equals(Action.SMALL_ICON)) { + setIcon((ImageResource) (act.getValue(Action.SMALL_ICON))); + } else if (event.getPropertyName().equals(Action.SHORT_DESCRIPTION)) { + setToolTipText((String) (act.getValue(Action.SHORT_DESCRIPTION))); + } + // else if (e.getPropertyName().equals(Action.MNEMONIC_KEY)) { + // if (act.getValue(Action.MNEMONIC_KEY) != null) { + // setMnemonic(((Integer) (act.getValue(Action.MNEMONIC_KEY))) + // .intValue()); + // } else if + // (e.getPropertyName().equals(Action.ACTION_COMMAND_KEY)) { + // setActionCommand((String) + // (act.getValue(Action.ACTION_COMMAND_KEY))); + // } + // } + } + }; + } + + protected abstract void setEnabled(boolean enabled); + + protected abstract void setIcon(ImageResource imageResource); + + protected abstract void setText(String text); + + protected abstract void setToolTipText(String text); + + private void configurePropertiesFromActionImpl(final Action action) { + if (action == null) { + setText(null); + setIcon(null); + setEnabled(true); + setToolTipText(null); + } else { + setText((String) (action.getValue(Action.NAME))); + setIcon((ImageResource) (action.getValue(Action.SMALL_ICON))); + setEnabled(action.isEnabled()); + setToolTipText((String) (action.getValue(Action.SHORT_DESCRIPTION))); + // if (a.getValue(Action.MNEMONIC_KEY) != null) { + // setMnemonic(((Integer) + // (a.getValue(Action.MNEMONIC_KEY))).intValue()); + // } + // String actionCommand = (String) + // (a.getValue(Action.ACTION_COMMAND_KEY)); + // + // // Set actionCommand to button's text by default if it is not + // // specified + // if (actionCommand != null) { + // setActionCommand((String) + // (a.getValue(Action.ACTION_COMMAND_KEY))); + // } else { + // setActionCommand(getText()); + // } + } + } + +} Added: trunk/src/main/java/org/ourproject/kune/platf/client/actions/ui/AbstractMenuItem.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/platf/client/actions/ui/AbstractMenuItem.java 2009-05-21 18:31:14 UTC (rev 1112) +++ trunk/src/main/java/org/ourproject/kune/platf/client/actions/ui/AbstractMenuItem.java 2009-05-24 18:56:49 UTC (rev 1113) @@ -0,0 +1,57 @@ +package org.ourproject.kune.platf.client.actions.ui; + +import org.ourproject.kune.platf.client.actions.ActionEvent; +import org.ourproject.kune.platf.client.ui.rte.img.RTEImgResources; + +import com.google.gwt.libideas.resources.client.ImageResource; +import com.gwtext.client.core.EventObject; +import com.gwtext.client.widgets.menu.BaseItem; +import com.gwtext.client.widgets.menu.MenuItem; +import com.gwtext.client.widgets.menu.event.BaseItemListenerAdapter; + +public abstract class AbstractMenuItem extends AbstractGuiItem { + + private transient final MenuItem item; + + public AbstractMenuItem(final MenuItemDescriptor descriptor) { + super(); + item = new MenuItem(); + initWidget(item); + item.addListener(new BaseItemListenerAdapter() { + @Override + public void onClick(final BaseItem item, final EventObject event) { + if (action != null) { + action.actionPerformed(new ActionEvent(item, event.getBrowserEvent())); + } + } + }); + setAction(descriptor.action); + } + + @Override + protected void setEnabled(final boolean enabled) { + if (enabled) { + item.enable(); + } else { + item.disable(); + } + } + + @Override + protected void setIcon(final ImageResource imageResource) { + if (imageResource != null) { + // FIXME + item.setIconCls(RTEImgResources.SUFFIX + imageResource.getName()); + } + } + + @Override + protected void setText(final String text) { + item.setText(text); + } + + @Override + protected void setToolTipText(final String text) { + item.setTitle(text); + } +} Added: trunk/src/main/java/org/ourproject/kune/platf/client/actions/ui/AbstractSeparator.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/platf/client/actions/ui/AbstractSeparator.java 2009-05-21 18:31:14 UTC (rev 1112) +++ trunk/src/main/java/org/ourproject/kune/platf/client/actions/ui/AbstractSeparator.java 2009-05-24 18:56:49 UTC (rev 1113) @@ -0,0 +1,16 @@ +package org.ourproject.kune.platf.client.actions.ui; + +import org.ourproject.kune.platf.client.actions.AbstractAction; +import org.ourproject.kune.platf.client.actions.ActionEvent; + +public class AbstractSeparator extends AbstractUIActionDescriptor { + + public AbstractSeparator() { + super(new AbstractAction() { + public void actionPerformed(final ActionEvent event) { + // No action + } + }); + } + +} Added: trunk/src/main/java/org/ourproject/kune/platf/client/actions/ui/AbstractUIActionDescriptor.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/platf/client/actions/ui/AbstractUIActionDescriptor.java 2009-05-21 18:31:14 UTC (rev 1112) +++ trunk/src/main/java/org/ourproject/kune/platf/client/actions/ui/AbstractUIActionDescriptor.java 2009-05-24 18:56:49 UTC (rev 1113) @@ -0,0 +1,138 @@ +package org.ourproject.kune.platf.client.actions.ui; + +import org.ourproject.kune.platf.client.actions.AbstractAction; + +// TODO: Auto-generated Javadoc +/** + * The Class AbstractUIActionDescriptor. + */ +public abstract class AbstractUIActionDescriptor { + + /** The action. */ + protected transient AbstractAction action; + + /** The position where the item will be inserted. */ + private int position; + + /** If the action must be confirmed. */ + private boolean confirmRequired; + + /** The confirmation dialog title. */ + private String confirmationTitle; + + /** The confirmation dialog text. */ + private String confirmationText; + + /** The item location. */ + private String location; + + /** + * Instantiates a new abstract ui action descriptor. This is used for + * describe UI button, menus, menu items and so on + * + * @param action + * the action + */ + public AbstractUIActionDescriptor(final AbstractAction action) { + this.action = action; + } + + /** + * Gets the dialog confirmation text. + * + * @return the confirmation text + */ + public String getConfirmationText() { + return confirmationText; + } + + /** + * Gets the dialog confirmation title. + * + * @return the confirmation title + */ + public String getConfirmationTitle() { + return confirmationTitle; + } + + /** + * Gets the location, a string used to group actions with locations (top + * bar, bottom bar, user bar...). + * + * @return the location + */ + public String getLocation() { + return location; + } + + /** + * Gets the position. + * + * @return the position + */ + public int getPosition() { + return position; + } + + /** + * Checks if is confirm required previous to do the action. + * + * @return true, if is confirm required + */ + public boolean isConfirmRequired() { + return confirmRequired; + } + + /** + * Sets the confirmation text. + * + * @param confirmationText + * the new confirmation text + */ + public void setConfirmationText(final String confirmationText) { + this.confirmationText = confirmationText; + } + + /** + * Sets the confirmation title. + * + * @param confirmationTitle + * the new confirmation title + */ + public void setConfirmationTitle(final String confirmationTitle) { + this.confirmationTitle = confirmationTitle; + } + + /** + * Sets the confirm required. + * + * @param isConfirmRequired + * the new confirm required + */ + public void setConfirmRequired(final boolean isConfirmRequired) { + this.confirmRequired = isConfirmRequired; + } + + /** + * If we have several toolbars, we can group with the "location" string key + * actions that must be in the same location (ex: top bar, bottom bar, and + * so on). + * + * @param location + * the new location + */ + public void setLocation(final String location) { + this.location = location; + } + + /** + * Sets the position (where the UI element will be positioned, for instance + * in a toolbar or in a menu). + * + * @param position + * the new position + */ + public void setPosition(final int position) { + this.position = position; + } +} Added: trunk/src/main/java/org/ourproject/kune/platf/client/actions/ui/ButtonDescriptor.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/platf/client/actions/ui/ButtonDescriptor.java 2009-05-21 18:31:14 UTC (rev 1112) +++ trunk/src/main/java/org/ourproject/kune/platf/client/actions/ui/ButtonDescriptor.java 2009-05-24 18:56:49 UTC (rev 1113) @@ -0,0 +1,10 @@ +package org.ourproject.kune.platf.client.actions.ui; + +import org.ourproject.kune.platf.client.actions.AbstractAction; + +public class ButtonDescriptor extends AbstractUIActionDescriptor { + + public ButtonDescriptor(final AbstractAction action) { + super(action); + } +} Deleted: trunk/src/main/java/org/ourproject/kune/platf/client/actions/ui/CheckButton.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/platf/client/actions/ui/CheckButton.java 2009-05-21 18:31:14 UTC (rev 1112) +++ trunk/src/main/java/org/ourproject/kune/platf/client/actions/ui/CheckButton.java 2009-05-24 18:56:49 UTC (rev 1113) @@ -1,5 +0,0 @@ -package org.ourproject.kune.platf.client.actions.ui; - -public class CheckButton { - -} Modified: trunk/src/main/java/org/ourproject/kune/platf/client/actions/ui/DefaultButton.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/platf/client/actions/ui/DefaultButton.java 2009-05-21 18:31:14 UTC (rev 1112) +++ trunk/src/main/java/org/ourproject/kune/platf/client/actions/ui/DefaultButton.java 2009-05-24 18:56:49 UTC (rev 1113) @@ -1,28 +1,10 @@ package org.ourproject.kune.platf.client.actions.ui; -import org.ourproject.kune.platf.client.actions.Action; -import com.google.gwt.libideas.resources.client.ImageResource; - public class DefaultButton extends AbstractButton { - public DefaultButton() { - } - public DefaultButton(final Action action) { - configurePropertiesFromAction(action); + public DefaultButton(final ButtonDescriptor btn) { + super(btn); } - public DefaultButton(final ImageResource icon) { - setIcon(icon); - } - - public DefaultButton(final String text) { - setText(text); - } - - public DefaultButton(final String text, final ImageResource icon) { - setText(text); - setIcon(icon); - } - } Added: trunk/src/main/java/org/ourproject/kune/platf/client/actions/ui/DefaultMenuCheckItem.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/platf/client/actions/ui/DefaultMenuCheckItem.java 2009-05-21 18:31:14 UTC (rev 1112) +++ trunk/src/main/java/org/ourproject/kune/platf/client/actions/ui/DefaultMenuCheckItem.java 2009-05-24 18:56:49 UTC (rev 1113) @@ -0,0 +1,9 @@ +package org.ourproject.kune.platf.client.actions.ui; + +public class DefaultMenuCheckItem extends AbstractMenuItem { + + public DefaultMenuCheckItem(final MenuCheckItemDescriptor descriptor) { + super(descriptor); + } + +} Added: trunk/src/main/java/org/ourproject/kune/platf/client/actions/ui/DefaultMenuItem.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/platf/client/actions/ui/DefaultMenuItem.java 2009-05-21 18:31:14 UTC (rev 1112) +++ trunk/src/main/java/org/ourproject/kune/platf/client/actions/ui/DefaultMenuItem.java 2009-05-24 18:56:49 UTC (rev 1113) @@ -0,0 +1,9 @@ +package org.ourproject.kune.platf.client.actions.ui; + +public class DefaultMenuItem extends AbstractMenuItem { + + public DefaultMenuItem(final MenuItemDescriptor descriptor) { + super(descriptor); + } + +} Added: trunk/src/main/java/org/ourproject/kune/platf/client/actions/ui/MenuCheckItemDescriptor.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/platf/client/actions/ui/MenuCheckItemDescriptor.java 2009-05-21 18:31:14 UTC (rev 1112) +++ trunk/src/main/java/org/ourproject/kune/platf/client/actions/ui/MenuCheckItemDescriptor.java 2009-05-24 18:56:49 UTC (rev 1113) @@ -0,0 +1,25 @@ +package org.ourproject.kune.platf.client.actions.ui; + +import org.ourproject.kune.platf.client.actions.AbstractAction; + +public class MenuCheckItemDescriptor extends MenuItemDescriptor { + private static final String CHECKED = "checked"; + + protected transient boolean checked = false; + + public MenuCheckItemDescriptor(final MenuDescriptor parent, final AbstractAction action) { + super(parent, action); + } + + public boolean isChecked() { + return checked; + } + + public void setChecked(final boolean checked) { + if (checked != this.checked) { + this.checked = checked; + action.putValue(CHECKED, this.checked); + } + } + +} Added: trunk/src/main/java/org/ourproject/kune/platf/client/actions/ui/MenuDescriptor.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/platf/client/actions/ui/MenuDescriptor.java 2009-05-21 18:31:14 UTC (rev 1112) +++ trunk/src/main/java/org/ourproject/kune/platf/client/actions/ui/MenuDescriptor.java 2009-05-24 18:56:49 UTC (rev 1113) @@ -0,0 +1,23 @@ +package org.ourproject.kune.platf.client.actions.ui; + +import org.ourproject.kune.platf.client.actions.AbstractAction; + +public class MenuDescriptor extends AbstractUIActionDescriptor { + + private static final MenuDescriptor NO_PARENT = null; + private transient final MenuDescriptor parent; + + public MenuDescriptor(final AbstractAction action) { + this(NO_PARENT, action); + } + + public MenuDescriptor(final MenuDescriptor parent, final AbstractAction action) { + super(action); + this.parent = parent; + } + + public MenuDescriptor getParent() { + return parent; + } + +} Added: trunk/src/main/java/org/ourproject/kune/platf/client/actions/ui/MenuItemDescriptor.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/platf/client/actions/ui/MenuItemDescriptor.java 2009-05-21 18:31:14 UTC (rev 1112) +++ trunk/src/main/java/org/ourproject/kune/platf/client/actions/ui/MenuItemDescriptor.java 2009-05-24 18:56:49 UTC (rev 1113) @@ -0,0 +1,17 @@ +package org.ourproject.kune.platf.client.actions.ui; + +import org.ourproject.kune.platf.client.actions.AbstractAction; + +public class MenuItemDescriptor extends AbstractUIActionDescriptor { + + private transient final MenuDescriptor parent; + + public MenuItemDescriptor(final MenuDescriptor parent, final AbstractAction action) { + super(action); + this.parent = parent; + } + + public MenuDescriptor getParent() { + return parent; + } +} Added: trunk/src/main/java/org/ourproject/kune/platf/client/actions/ui/MenuRadioDescriptor.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/platf/client/actions/ui/MenuRadioDescriptor.java 2009-05-21 18:31:14 UTC (rev 1112) +++ trunk/src/main/java/org/ourproject/kune/platf/client/actions/ui/MenuRadioDescriptor.java 2009-05-24 18:56:49 UTC (rev 1113) @@ -0,0 +1,17 @@ +package org.ourproject.kune.platf.client.actions.ui; + +import org.ourproject.kune.platf.client.actions.AbstractAction; + +public class MenuRadioDescriptor extends MenuCheckItemDescriptor { + + private transient final String group; + + public MenuRadioDescriptor(final MenuDescriptor parent, final AbstractAction action, final String group) { + super(parent, action); + this.group = group; + } + + public String getGroup() { + return group; + } +} Added: trunk/src/main/java/org/ourproject/kune/platf/client/actions/ui/MenuSeparator.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/platf/client/actions/ui/MenuSeparator.java 2009-05-21 18:31:14 UTC (rev 1112) +++ trunk/src/main/java/org/ourproject/kune/platf/client/actions/ui/MenuSeparator.java 2009-05-24 18:56:49 UTC (rev 1113) @@ -0,0 +1,5 @@ +package org.ourproject.kune.platf.client.actions.ui; + +// @PMD:REVIEWED:AtLeastOneConstructor: by vjrj on 24/05/09 15:59 +public class MenuSeparator extends AbstractSeparator { +} \ No newline at end of file Copied: trunk/src/main/java/org/ourproject/kune/platf/client/actions/ui/PushButton.java (from rev 1112, trunk/src/main/java/org/ourproject/kune/platf/client/actions/ui/CheckButton.java) =================================================================== --- trunk/src/main/java/org/ourproject/kune/platf/client/actions/ui/CheckButton.java 2009-05-21 18:31:14 UTC (rev 1112) +++ trunk/src/main/java/org/ourproject/kune/platf/client/actions/ui/PushButton.java 2009-05-24 18:56:49 UTC (rev 1113) @@ -0,0 +1,21 @@ +package org.ourproject.kune.platf.client.actions.ui; + +import org.ourproject.kune.platf.client.actions.PropertyChangeEvent; +import org.ourproject.kune.platf.client.actions.PropertyChangeListener; + +public class PushButton extends DefaultButton { + + public PushButton(final PushButtonDescriptor btn) { + super(btn); + setEnableToggle(true); + setPressed(btn.isPushed()); + action.addPropertyChangeListener(new PropertyChangeListener() { + public void propertyChange(final PropertyChangeEvent event) { + if (event.getPropertyName().equals(PushButtonDescriptor.PUSHED)) { + setPressed(btn.isPushed()); + } + } + }); + } + +} Added: trunk/src/main/java/org/ourproject/kune/platf/client/actions/ui/PushButtonDescriptor.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/platf/client/actions/ui/PushButtonDescriptor.java 2009-05-21 18:31:14 UTC (rev 1112) +++ trunk/src/main/java/org/ourproject/kune/platf/client/actions/ui/PushButtonDescriptor.java 2009-05-24 18:56:49 UTC (rev 1113) @@ -0,0 +1,30 @@ +package org.ourproject.kune.platf.client.actions.ui; + +import org.ourproject.kune.platf.client.actions.AbstractAction; + +public class PushButtonDescriptor extends ButtonDescriptor { + + public static final String PUSHED = "pushed"; + + protected transient boolean pushed = false; + + public PushButtonDescriptor(final AbstractAction action) { + super(action); + } + + public PushButtonDescriptor(final PushButtonDescriptor button) { + super(button.action); + pushed = button.pushed; + } + + public boolean isPushed() { + return pushed; + } + + public void setPushed(final boolean pushed) { + if (pushed != this.pushed) { + this.pushed = pushed; + action.putValue(PUSHED, this.pushed); + } + } +} Modified: trunk/src/main/java/org/ourproject/kune/platf/client/actions/ui/TestButton.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/platf/client/actions/ui/TestButton.java 2009-05-21 18:31:14 UTC (rev 1112) +++ trunk/src/main/java/org/ourproject/kune/platf/client/actions/ui/TestButton.java 2009-05-24 18:56:49 UTC (rev 1113) @@ -8,9 +8,10 @@ import com.google.gwt.user.client.Timer; -public class TestButton extends DefaultButton { +public class TestButton { public class NotiAction extends AbstractAction { public NotiAction() { + super(); super.putValue(Action.NAME, "test"); super.putValue(Action.SHORT_DESCRIPTION, "test button"); } @@ -21,24 +22,26 @@ } NotifyUser.info("Button clicked"); } - - @Override - public boolean isEnabled() { - return super.isEnabled(); - } } - public TestButton(final WorkspaceSkeleton ws) { - super(); - ws.getEntityWorkspace().getBottomTitle().add(this); + public TestButton(final WorkspaceSkeleton wksp) { final NotiAction noti = new NotiAction(); - super.setAction(noti); + + final PushButtonDescriptor descriptor = new PushButtonDescriptor(noti); + + final DefaultButton btn = new DefaultButton(descriptor); + + wksp.getEntityWorkspace().getBottomTitle().add(btn); new Timer() { @Override public void run() { noti.putValue(Action.NAME, "test2"); noti.putValue(Action.SHORT_DESCRIPTION, "test2 button"); + descriptor.setPushed(false); } - }.schedule(5000); + }.schedule(10000); + + descriptor.setPushed(true); + } } Added: trunk/src/main/java/org/ourproject/kune/platf/client/actions/ui/ToolbarSeparator.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/platf/client/actions/ui/ToolbarSeparator.java 2009-05-21 18:31:14 UTC (rev 1112) +++ trunk/src/main/java/org/ourproject/kune/platf/client/actions/ui/ToolbarSeparator.java 2009-05-24 18:56:49 UTC (rev 1113) @@ -0,0 +1,20 @@ +package org.ourproject.kune.platf.client.actions.ui; + +public class ToolbarSeparator extends AbstractSeparator { + + public enum Type { + spacer, separator, fill + } + + private transient final Type type; + + public ToolbarSeparator(final Type type) { + super(); + this.type = type; + } + + public Type getType() { + return type; + } + +} Modified: trunk/src/main/java/org/ourproject/kune/platf/client/services/PlatformModule.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/platf/client/services/PlatformModule.java 2009-05-21 18:31:14 UTC (rev 1112) +++ trunk/src/main/java/org/ourproject/kune/platf/client/services/PlatformModule.java 2009-05-24 18:56:49 UTC (rev 1113) @@ -258,10 +258,6 @@ public Application create() { return new ApplicationDefault($(Session.class)); } - - @Override - public void onAfterCreated(final Application instance) { - } }); register(Singleton.class, new Factory<DeferredCommandWrapper>(DeferredCommandWrapper.class) { @@ -338,8 +334,8 @@ register(NoDecoration.class, new Factory<RTEditor>(RTEditor.class) { @Override public RTEditor create() { - RTEActionTopToolbar topBar = $(RTEActionTopToolbar.class); - RTEActionSndToolbar sndBar = $(RTEActionSndToolbar.class); + final RTEActionTopToolbar topBar = $(RTEActionTopToolbar.class); + final RTEActionSndToolbar sndBar = $(RTEActionSndToolbar.class); final RTEditorPresenter presenter = new RTEditorPresenter($(I18nTranslationService.class), $(Session.class), topBar, sndBar, $(RTEImgResources.class), $$(InsertLinkDialog.class), $$(ColorWebSafePalette.class), $$(EditHtmlDialog.class), $$(InsertImageDialog.class), @@ -352,10 +348,10 @@ }, new Factory<RTESavingEditor>(RTESavingEditor.class) { @Override public RTESavingEditor create() { - RTESavingEditorPresenter presenter = new RTESavingEditorPresenter($(RTEditor.class), true, + final RTESavingEditorPresenter presenter = new RTESavingEditorPresenter($(RTEditor.class), true, $(I18nTranslationService.class), $(StateManager.class), $(DeferredCommandWrapper.class), $(RTEImgResources.class), $(TimerWrapper.class)); - RTESavingEditorPanel panel = new RTESavingEditorPanel(); + final RTESavingEditorPanel panel = new RTESavingEditorPanel(); presenter.init(panel); return presenter; } @@ -378,7 +374,7 @@ register(Singleton.class, new Factory<RTEImgResources>(RTEImgResources.class) { @Override public RTEImgResources create() { - RTEImgResources instance = GWT.create(RTEImgResources.class); + final RTEImgResources instance = GWT.create(RTEImgResources.class); StyleInjector.injectStylesheet(instance.css().getText()); return instance; }