/*\r
- * Copyright 2007, 2008, 2009, 2010 Electronic Business Systems Ltd.\r
+ * Copyright 2011 GRNET S.A. All rights reserved.\r
*\r
- * This file is part of GSS.\r
+ * Redistribution and use in source and binary forms, with or\r
+ * without modification, are permitted provided that the following\r
+ * conditions are met:\r
*\r
- * GSS is free software: you can redistribute it and/or modify\r
- * it under the terms of the GNU General Public License as published by\r
- * the Free Software Foundation, either version 3 of the License, or\r
- * (at your option) any later version.\r
+ * 1. Redistributions of source code must retain the above\r
+ * copyright notice, this list of conditions and the following\r
+ * disclaimer.\r
*\r
- * GSS is distributed in the hope that it will be useful,\r
- * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r
- * GNU General Public License for more details.\r
+ * 2. Redistributions in binary form must reproduce the above\r
+ * copyright notice, this list of conditions and the following\r
+ * disclaimer in the documentation and/or other materials\r
+ * provided with the distribution.\r
*\r
- * You should have received a copy of the GNU General Public License\r
- * along with GSS. If not, see <http://www.gnu.org/licenses/>.\r
+ * THIS SOFTWARE IS PROVIDED BY GRNET S.A. ``AS IS'' AND ANY EXPRESS\r
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\r
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\r
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GRNET S.A OR\r
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\r
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\r
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF\r
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED\r
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\r
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\r
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r
+ * POSSIBILITY OF SUCH DAMAGE.\r
+ *\r
+ * The views and conclusions contained in the software and\r
+ * documentation are those of the authors and should not be\r
+ * interpreted as representing official policies, either expressed\r
+ * or implied, of GRNET S.A.\r
*/\r
package gr.grnet.pithos.web.client;\r
\r
-import gr.grnet.pithos.web.client.rest.GetCommand;\r
-import gr.grnet.pithos.web.client.rest.resource.TagsResource;\r
-\r
-import java.util.List;\r
-\r
-import com.google.gwt.core.client.GWT;\r
import com.google.gwt.dom.client.NativeEvent;\r
-import com.google.gwt.event.dom.client.ClickEvent;\r
-import com.google.gwt.event.dom.client.ClickHandler;\r
import com.google.gwt.event.dom.client.KeyCodes;\r
-import com.google.gwt.user.client.DeferredCommand;\r
import com.google.gwt.user.client.Event.NativePreviewEvent;\r
-import com.google.gwt.user.client.ui.Anchor;\r
import com.google.gwt.user.client.ui.DialogBox;\r
-import com.google.gwt.user.client.ui.FlowPanel;\r
-import com.google.gwt.user.client.ui.Label;\r
-import com.google.gwt.user.client.ui.TabPanel;\r
-import com.google.gwt.user.client.ui.TextBox;\r
+import com.google.gwt.user.client.ui.VerticalPanel;\r
\r
/**\r
* Abstract class, parent of all 'File properties' dialog boxes.\r
*\r
- * @author droutsis\r
*/\r
public abstract class AbstractPropertiesDialog extends DialogBox {\r
\r
protected static final String MULTIPLE_VALUES_TEXT = "(Multiple values)";\r
\r
- /**\r
- * Text box with the tags associated with the file\r
- */\r
- protected TextBox tags = new TextBox();\r
+ protected VerticalPanel inner = null;\r
\r
- protected String initialTagText;\r
-\r
- /**\r
- * A FlowPanel with all user tags\r
- */\r
- protected FlowPanel allTagsContent;\r
-\r
-\r
- protected TabPanel inner = null;\r
+ protected Pithos app;\r
\r
/**\r
* The widget's constructor.\r
*\r
*/\r
- public AbstractPropertiesDialog() {\r
-\r
+ public AbstractPropertiesDialog(Pithos _app) {\r
+ app = _app;\r
// Enable IE selection for the dialog (must disable it upon closing it)\r
- GSS.enableIESelection();\r
+ Pithos.enableIESelection();\r
\r
setAnimationEnabled(true);\r
\r
}\r
- /**\r
- * Retrieves all user tags from the server and updates the FlowPanel\r
- *\r
- * @param userId\r
- */\r
- protected void updateTags() {\r
- GetCommand<TagsResource> tc = new GetCommand<TagsResource>(TagsResource.class, GSS.get().getCurrentUserResource().getTagsPath(),null) {\r
-\r
- @Override\r
- public void onComplete() {\r
- allTagsContent.clear();\r
- TagsResource tagr = getResult();\r
- List<String> userTags = tagr.getTags();\r
- Anchor tag = null;\r
- for(String usrTag : userTags){\r
- tag = new Anchor(usrTag.toString(), false);\r
- tag.addStyleName("pithos-tag");\r
- allTagsContent.add(tag);\r
- Label separator = new Label(", ");\r
- separator.addStyleName("pithos-tag");\r
- allTagsContent.add(separator);\r
- tag.addClickHandler( new ClickHandler() {\r
-\r
- @Override\r
- public void onClick(ClickEvent event) {\r
- String existing = tags.getText();\r
- if (MULTIPLE_VALUES_TEXT.equals(existing)) existing = "";\r
- String newTag = ((Anchor) event.getSource()).getText().trim();\r
- // insert the new tag only if it is not in the list\r
- // already\r
- if (existing.indexOf(newTag) == -1 && !existing.trim().endsWith(newTag))\r
- tags.setText(existing.trim()\r
- + (existing.length() > 0 ? ", " : "")\r
- + newTag);\r
- }\r
- });\r
- }\r
- }\r
-\r
- @Override\r
- public void onError(Throwable t) {\r
- GWT.log("", t);\r
- GSS.get().displayError("Unable to fetch user tags");\r
- }\r
- };\r
- DeferredCommand.addCommand(tc);\r
-\r
- }\r
\r
/**\r
* Accepts any change and updates the file\r
protected abstract void accept();\r
\r
@Override\r
- @SuppressWarnings("fallthrough")\r
protected void onPreviewNativeEvent(NativePreviewEvent preview) {\r
super.onPreviewNativeEvent(preview);\r
\r
switch (evt.getKeyCode()) {\r
case KeyCodes.KEY_ENTER:\r
accept();\r
- case KeyCodes.KEY_ESCAPE:\r
- closeDialog();\r
- break;\r
+ //$FALL-THROUGH$\r
+ case KeyCodes.KEY_ESCAPE:\r
+ closeDialog();\r
+ break;\r
}\r
}\r
\r
-\r
-\r
- public void selectTab(int _tab) {\r
- inner.selectTab(_tab);\r
- }\r
-\r
-\r
/**\r
* Enables IE selection prevention and hides the dialog\r
* (we disable the prevention on creation of the dialog)\r
*/\r
public void closeDialog() {\r
- GSS.preventIESelection();\r
+ Pithos.preventIESelection();\r
hide();\r
}\r
-\r
}\r