X-Git-Url: https://code.grnet.gr/git/pithos/blobdiff_plain/2002c1dc4bfa2e5525f0a8f5353234887138aac4..3a904ecb30c8f4c3166c50df1cf38558b280c249:/src/gr/ebs/gss/client/AbstractPropertiesDialog.java diff --git a/src/gr/ebs/gss/client/AbstractPropertiesDialog.java b/src/gr/ebs/gss/client/AbstractPropertiesDialog.java index d54685a..b940e66 100644 --- a/src/gr/ebs/gss/client/AbstractPropertiesDialog.java +++ b/src/gr/ebs/gss/client/AbstractPropertiesDialog.java @@ -1,5 +1,5 @@ /* - * Copyright 2007, 2008, 2009 Electronic Business Systems Ltd. + * Copyright 2007, 2008, 2009, 2010 Electronic Business Systems Ltd. * * This file is part of GSS. * @@ -21,19 +21,21 @@ package gr.ebs.gss.client; import gr.ebs.gss.client.rest.GetCommand; import gr.ebs.gss.client.rest.resource.TagsResource; -import java.util.Iterator; import java.util.List; import com.google.gwt.core.client.GWT; +import com.google.gwt.dom.client.NativeEvent; +import com.google.gwt.event.dom.client.ClickEvent; +import com.google.gwt.event.dom.client.ClickHandler; +import com.google.gwt.event.dom.client.KeyCodes; import com.google.gwt.user.client.DeferredCommand; -import com.google.gwt.user.client.ui.Button; -import com.google.gwt.user.client.ui.ClickListener; +import com.google.gwt.user.client.Event.NativePreviewEvent; +import com.google.gwt.user.client.ui.Anchor; import com.google.gwt.user.client.ui.DialogBox; import com.google.gwt.user.client.ui.FlowPanel; -import com.google.gwt.user.client.ui.KeyboardListener; +import com.google.gwt.user.client.ui.Label; import com.google.gwt.user.client.ui.TabPanel; import com.google.gwt.user.client.ui.TextBox; -import com.google.gwt.user.client.ui.Widget; /** * Abstract class, parent of all 'File properties' dialog boxes. @@ -42,6 +44,7 @@ import com.google.gwt.user.client.ui.Widget; */ public abstract class AbstractPropertiesDialog extends DialogBox { + protected static final String MULTIPLE_VALUES_TEXT = "(Multiple values)"; /** * Text box with the tags associated with the file @@ -70,34 +73,42 @@ public abstract class AbstractPropertiesDialog extends DialogBox { setAnimationEnabled(true); } - /** * Retrieves all user tags from the server and updates the FlowPanel * * @param userId */ protected void updateTags() { - GetCommand tc = new GetCommand(TagsResource.class, GSS.get().getCurrentUserResource().getTagsPath()) { + GetCommand tc = new GetCommand(TagsResource.class, GSS.get().getCurrentUserResource().getTagsPath(),null) { @Override public void onComplete() { allTagsContent.clear(); TagsResource tagr = getResult(); List userTags = tagr.getTags(); - Iterator t = userTags.iterator(); - while (t.hasNext()) { - final Button tag = new Button((String) t.next(), new ClickListener() { + Anchor tag = null; + for(String usrTag : userTags){ + tag = new Anchor(usrTag.toString(), false); + tag.addStyleName("gss-tag"); + allTagsContent.add(tag); + Label separator = new Label(", "); + separator.addStyleName("gss-tag"); + allTagsContent.add(separator); + tag.addClickHandler( new ClickHandler() { - public void onClick(Widget sender) { + @Override + public void onClick(ClickEvent event) { String existing = tags.getText(); - String newTag = ((Button) sender).getText().trim(); + if (MULTIPLE_VALUES_TEXT.equals(existing)) existing = ""; + String newTag = ((Anchor) event.getSource()).getText().trim(); // insert the new tag only if it is not in the list // already - if (existing.indexOf(newTag + ",") == -1 && !existing.trim().endsWith(newTag)) - tags.setText(existing.trim() + (existing.length() > 0 ? ", " : "") + newTag); + if (existing.indexOf(newTag) == -1 && !existing.trim().endsWith(newTag)) + tags.setText(existing.trim() + + (existing.length() > 0 ? ", " : "") + + newTag); } }); - allTagsContent.add(tag); } } @@ -119,19 +130,22 @@ public abstract class AbstractPropertiesDialog extends DialogBox { @Override @SuppressWarnings("fallthrough") - public boolean onKeyDownPreview(char key, int modifiers) { - // Use the popup's key preview hooks to close the dialog when either - // enter or escape is pressed. - switch (key) { - case KeyboardListener.KEY_ENTER: - accept(); - case KeyboardListener.KEY_ESCAPE: - closeDialog(); - break; - } - - return true; - } + protected void onPreviewNativeEvent(NativePreviewEvent preview) { + super.onPreviewNativeEvent(preview); + + NativeEvent evt = preview.getNativeEvent(); + if (evt.getType().equals("keydown")) + // Use the popup's key preview hooks to close the dialog when either + // enter or escape is pressed. + switch (evt.getKeyCode()) { + case KeyCodes.KEY_ENTER: + accept(); + case KeyCodes.KEY_ESCAPE: + closeDialog(); + break; + } + } + public void selectTab(int _tab) {