Use the standard theme from GWT, instead of our bad emulation from the GWT-1.3 era.
[pithos] / src / gr / ebs / gss / client / SearchResults.java
index cf9c3b9..2a97ca3 100644 (file)
@@ -32,30 +32,31 @@ import java.util.Comparator;
 import java.util.List;\r
 \r
 import com.google.gwt.core.client.GWT;\r
+import com.google.gwt.event.dom.client.ClickEvent;\r
+import com.google.gwt.event.dom.client.ClickHandler;\r
 import com.google.gwt.http.client.URL;\r
 import com.google.gwt.i18n.client.DateTimeFormat;\r
+import com.google.gwt.resources.client.ClientBundle;\r
+import com.google.gwt.resources.client.ImageResource;\r
 import com.google.gwt.user.client.DOM;\r
 import com.google.gwt.user.client.DeferredCommand;\r
 import com.google.gwt.user.client.Event;\r
 import com.google.gwt.user.client.IncrementalCommand;\r
 import com.google.gwt.user.client.Window;\r
 import com.google.gwt.user.client.ui.AbstractImagePrototype;\r
-import com.google.gwt.user.client.ui.ClickListener;\r
 import com.google.gwt.user.client.ui.Composite;\r
 import com.google.gwt.user.client.ui.Grid;\r
 import com.google.gwt.user.client.ui.HTML;\r
 import com.google.gwt.user.client.ui.HasHorizontalAlignment;\r
 import com.google.gwt.user.client.ui.HorizontalPanel;\r
-import com.google.gwt.user.client.ui.SourcesTableEvents;\r
-import com.google.gwt.user.client.ui.TableListener;\r
 import com.google.gwt.user.client.ui.VerticalPanel;\r
-import com.google.gwt.user.client.ui.Widget;\r
+import com.google.gwt.user.client.ui.HTMLTable.Cell;\r
 \r
 /**\r
  * A composite that displays a list of search results for a particular query on\r
  * files.\r
  */\r
-public class SearchResults extends Composite implements TableListener, ClickListener {\r
+public class SearchResults extends Composite implements  ClickHandler {\r
 \r
        private HTML prevButton = new HTML("<a href='javascript:;'>&lt; Previous</a>", true);\r
 \r
@@ -87,16 +88,16 @@ public class SearchResults extends Composite implements TableListener, ClickList
         * Specifies that the images available for this composite will be the ones\r
         * available in FileContextMenu.\r
         */\r
-       public interface Images extends FileContextMenu.Images, Folders.Images {\r
+       public interface Images extends ClientBundle,FileContextMenu.Images, Folders.Images {\r
 \r
-               @Resource("gr/ebs/gss/resources/blank.gif")\r
-               AbstractImagePrototype blank();\r
+               @Source("gr/ebs/gss/resources/blank.gif")\r
+               ImageResource blank();\r
 \r
-               @Resource("gr/ebs/gss/resources/asc.png")\r
-               AbstractImagePrototype asc();\r
+               @Source("gr/ebs/gss/resources/asc.png")\r
+               ImageResource asc();\r
 \r
-               @Resource("gr/ebs/gss/resources/desc.png")\r
-               AbstractImagePrototype desc();\r
+               @Source("gr/ebs/gss/resources/desc.png")\r
+               ImageResource desc();\r
        }\r
 \r
        /**\r
@@ -171,7 +172,7 @@ public class SearchResults extends Composite implements TableListener, ClickList
                                        return;\r
                                if (DOM.eventGetType(event) == Event.ONCONTEXTMENU && selectedRows.size() != 0) {\r
                                        FileContextMenu fm = new FileContextMenu(images, false, false);\r
-                                       fm.onClick(contextMenu);\r
+                                       fm.onEvent(event);\r
                                }\r
                                else if (DOM.eventGetType(event) == Event.ONDBLCLICK)\r
                                        if(getSelectedFiles().size() == 1){\r
@@ -201,11 +202,11 @@ public class SearchResults extends Composite implements TableListener, ClickList
                                super.onBrowserEvent(event);\r
                        }\r
                };\r
-               prevButton.addClickListener(this);\r
-               nextButton.addClickListener(this);\r
+               prevButton.addClickHandler(this);\r
+               nextButton.addClickHandler(this);\r
 \r
-               contextMenu = new DnDFocusPanel(new HTML(images.fileContextMenu().getHTML()));\r
-               contextMenu.addClickListener(new FileContextMenu(images, false, false));\r
+               contextMenu = new DnDFocusPanel(new HTML(AbstractImagePrototype.create(images.fileContextMenu()).getHTML()));\r
+               contextMenu.addClickHandler(new FileContextMenu(images, false, false));\r
                app.getDragController().makeDraggable(contextMenu);\r
 \r
                // Setup the table.\r
@@ -214,7 +215,14 @@ public class SearchResults extends Composite implements TableListener, ClickList
                table.setWidth("100%");\r
 \r
                // Hook up events.\r
-               table.addTableListener(this);\r
+               table.addClickHandler(new ClickHandler() {\r
+\r
+                       @Override\r
+                       public void onClick(ClickEvent event) {\r
+                               Cell cell = table.getCellForEvent(event);\r
+                               onRowClicked(cell.getRowIndex());\r
+                       }\r
+               });\r
 \r
                // Create the 'navigation' bar at the upper-right.\r
                HorizontalPanel innerNavBar = new HorizontalPanel();\r
@@ -228,7 +236,7 @@ public class SearchResults extends Composite implements TableListener, ClickList
                navBar.setWidth("100%");\r
                VerticalPanel vp = new VerticalPanel();\r
                vp.add(searchResults);\r
-               searchResults.addStyleName("gss-searchlabel");\r
+               searchResults.addStyleName("gss-searchLabel");\r
                vp.add(table);\r
                initWidget(vp);\r
                table.setStyleName("gss-List");\r
@@ -247,23 +255,23 @@ public class SearchResults extends Composite implements TableListener, ClickList
                preventIESelection();\r
        }\r
 \r
-       public void onClick(Widget sender) {\r
-               if (sender == nextButton) {\r
+       public void onClick(ClickEvent event) {\r
+               if (event.getSource() == nextButton) {\r
                        // Move forward a page.\r
                        clearSelectedRows();\r
                        startIndex += GSS.VISIBLE_FILE_COUNT;\r
                        if (startIndex >= folderFileCount)\r
                                startIndex -= GSS.VISIBLE_FILE_COUNT;\r
                        else\r
-                               update();\r
-               } else if (sender == prevButton) {\r
+                               update(false);\r
+               } else if (event.getSource() == prevButton) {\r
                        clearSelectedRows();\r
                        // Move back a page.\r
                        startIndex -= GSS.VISIBLE_FILE_COUNT;\r
                        if (startIndex < 0)\r
                                startIndex = 0;\r
                        else\r
-                               update();\r
+                               update(false);\r
                }\r
        }\r
 \r
@@ -280,7 +288,7 @@ public class SearchResults extends Composite implements TableListener, ClickList
                return DONE;\r
        }\r
 \r
-       public void onCellClicked(SourcesTableEvents sender, int row, int cell) {\r
+       public void onRowClicked(int row) {\r
                // Select the row that was clicked (-1 to account for header row).\r
                if (row > folderFileCount)\r
                        return;\r
@@ -327,63 +335,51 @@ public class SearchResults extends Composite implements TableListener, ClickList
        private void initTable() {\r
 \r
                nameLabel = new HTML("Name");\r
-               nameLabel.addClickListener(new ClickListener() {\r
-\r
-                       public void onClick(Widget sender) {\r
+               nameLabel.addClickHandler(new ClickHandler() {\r
+                       @Override\r
+                       public void onClick(ClickEvent event) {\r
                                sortFiles("name");\r
-                               update();\r
-\r
                        }\r
 \r
                });\r
                versionLabel = new HTML("Version");\r
-               versionLabel.addClickListener(new ClickListener() {\r
-\r
-                       public void onClick(Widget sender) {\r
+               versionLabel.addClickHandler(new ClickHandler() {\r
+                       @Override\r
+                       public void onClick(ClickEvent event) {\r
                                sortFiles("version");\r
-                               update();\r
-\r
                        }\r
 \r
                });\r
                sizeLabel = new HTML("Size");\r
-               sizeLabel.addClickListener(new ClickListener() {\r
-\r
-                       public void onClick(Widget sender) {\r
+               sizeLabel.addClickHandler(new ClickHandler() {\r
+                       @Override\r
+                       public void onClick(ClickEvent event) {\r
                                sortFiles("size");\r
-                               update();\r
-\r
                        }\r
 \r
                });\r
-               dateLabel = new HTML("Date");\r
-               dateLabel.addClickListener(new ClickListener() {\r
-\r
-                       public void onClick(Widget sender) {\r
+               dateLabel = new HTML("Last modified");\r
+               dateLabel.addClickHandler(new ClickHandler() {\r
+                       @Override\r
+                       public void onClick(ClickEvent event) {\r
                                sortFiles("date");\r
-                               update();\r
-\r
                        }\r
 \r
                });\r
                ownerLabel = new HTML("Owner");\r
-               ownerLabel.addClickListener(new ClickListener() {\r
-\r
-                       public void onClick(Widget sender) {\r
+               ownerLabel.addClickHandler(new ClickHandler() {\r
+                       @Override\r
+                       public void onClick(ClickEvent event) {\r
                                sortFiles("owner");\r
-                               update();\r
-\r
                        }\r
 \r
                });\r
 \r
                pathLabel = new HTML("Path");\r
-               pathLabel.addClickListener(new ClickListener() {\r
-\r
-                       public void onClick(Widget sender) {\r
+               pathLabel.addClickHandler(new ClickHandler() {\r
+                       @Override\r
+                       public void onClick(ClickEvent event) {\r
                                sortFiles("path");\r
-                               update();\r
-\r
                        }\r
 \r
                });\r
@@ -397,7 +393,7 @@ public class SearchResults extends Composite implements TableListener, ClickList
                table.setWidget(0, 4, versionLabel);\r
                // table.setText(0, 4, "Size");\r
                table.setWidget(0, 5, sizeLabel);\r
-               // table.setText(0, 5, "Date");\r
+               // table.setText(0, 5, "Last modified");\r
                table.setWidget(0, 6, dateLabel);\r
                table.setWidget(0, 7, navBar);\r
                table.getRowFormatter().setStyleName(0, "gss-ListHeader");\r
@@ -439,7 +435,7 @@ public class SearchResults extends Composite implements TableListener, ClickList
                                } else {\r
                                        for (int r : selectedRows) {\r
                                                int prow = r - startIndex;\r
-                                               table.setWidget(prow + 1, 0, images.document().createImage());\r
+                                               table.setWidget(prow + 1, 0, AbstractImagePrototype.create(images.document()).createImage());\r
                                        }\r
                                        selectedRows.add(startIndex + row);\r
                                        styleRow(row, true);\r
@@ -483,13 +479,72 @@ public class SearchResults extends Composite implements TableListener, ClickList
        /**\r
         * Update the display of the file list.\r
         */\r
-       void update() {\r
+       void update(boolean sort) {\r
                int count = folderFileCount;\r
                int max = startIndex + GSS.VISIBLE_FILE_COUNT;\r
                if (max > count)\r
                        max = count;\r
                folderTotalSize = 0;\r
 \r
+               if (sort && files != null && files.size() != 0) {\r
+                       clearLabels();\r
+                       clearSelectedRows();\r
+\r
+                       Collections.sort(files, new Comparator<FileResource>() {\r
+\r
+                               public int compare(FileResource arg0, FileResource arg1) {\r
+                                       AbstractImagePrototype descPrototype = AbstractImagePrototype.create(images.desc());\r
+                                       AbstractImagePrototype ascPrototype = AbstractImagePrototype.create(images.asc());\r
+                                       if (sortingType)\r
+                                               if (sortingProperty.equals("version")) {\r
+                                                       versionLabel.setHTML("Version&nbsp;" + descPrototype.getHTML());\r
+                                                       return arg0.getVersion().compareTo(arg1.getVersion());\r
+                                               } else if (sortingProperty.equals("owner")) {\r
+                                                       ownerLabel.setHTML("Owner&nbsp;" + descPrototype.getHTML());\r
+                                                       return arg0.getOwner().compareTo(arg1.getOwner());\r
+                                               } else if (sortingProperty.equals("date")) {\r
+                                                       dateLabel.setHTML("Last modified&nbsp;" + descPrototype.getHTML());\r
+                                                       return arg0.getModificationDate().compareTo(arg1.getModificationDate());\r
+                                               } else if (sortingProperty.equals("size")) {\r
+                                                       sizeLabel.setHTML("Size&nbsp;" + descPrototype.getHTML());\r
+                                                       return arg0.getContentLength().compareTo(arg1.getContentLength());\r
+                                               } else if (sortingProperty.equals("name")) {\r
+                                                       nameLabel.setHTML("Name&nbsp;" + descPrototype.getHTML());\r
+                                                       return arg0.getName().compareTo(arg1.getName());\r
+                                               } else if (sortingProperty.equals("path")) {\r
+                                                       pathLabel.setHTML("Path&nbsp;" + descPrototype.getHTML());\r
+                                                       return arg0.getUri().compareTo(arg1.getUri());\r
+                                               } else {\r
+                                                       nameLabel.setHTML("Name&nbsp;" + descPrototype.getHTML());\r
+                                                       return arg0.getName().compareTo(arg1.getName());\r
+                                               }\r
+                                       else if (sortingProperty.equals("version")) {\r
+                                               versionLabel.setHTML("Version&nbsp;" + ascPrototype.getHTML());\r
+                                               return arg1.getVersion().compareTo(arg0.getVersion());\r
+                                       } else if (sortingProperty.equals("owner")) {\r
+                                               ownerLabel.setHTML("Owner&nbsp;" + ascPrototype.getHTML());\r
+                                               return arg1.getOwner().compareTo(arg0.getOwner());\r
+                                       } else if (sortingProperty.equals("date")) {\r
+                                               dateLabel.setHTML("Last modified&nbsp;" + ascPrototype.getHTML());\r
+                                               return arg1.getModificationDate().compareTo(arg0.getModificationDate());\r
+                                       } else if (sortingProperty.equals("size")) {\r
+                                               sizeLabel.setHTML("Size&nbsp;" + ascPrototype.getHTML());\r
+                                               return arg1.getContentLength().compareTo(arg0.getContentLength());\r
+                                       } else if (sortingProperty.equals("name")) {\r
+                                               nameLabel.setHTML("Name&nbsp;" + ascPrototype.getHTML());\r
+                                               return arg1.getName().compareTo(arg0.getName());\r
+                                       } else if (sortingProperty.equals("path")) {\r
+                                               pathLabel.setHTML("Path&nbsp;" + ascPrototype.getHTML());\r
+                                               return arg1.getUri().compareTo(arg0.getUri());\r
+                                       } else {\r
+                                               nameLabel.setHTML("Name&nbsp;" + ascPrototype.getHTML());\r
+                                               return arg1.getName().compareTo(arg0.getName());\r
+                                       }\r
+                               }\r
+\r
+                       });\r
+\r
+               }\r
                // Show the selected files.\r
                int i = 1;\r
                for (; i < GSS.VISIBLE_FILE_COUNT + 1; ++i) {\r
@@ -500,7 +555,7 @@ public class SearchResults extends Composite implements TableListener, ClickList
                                break;\r
                        // Add a new row to the table, then set each of its columns to the\r
                        // proper values.\r
-                       table.setWidget(i, 0, images.document().createImage());\r
+                       table.setWidget(i, 0, AbstractImagePrototype.create(images.document()).createImage());\r
                        FileResource fileHeader = files.get(startIndex + i - 1);\r
                        table.getRowFormatter().addStyleName(i, "gss-fileRow");\r
                        table.setHTML(i, 1, fileHeader.getName());\r
@@ -509,7 +564,7 @@ public class SearchResults extends Composite implements TableListener, ClickList
                        table.setText(i, 4, String.valueOf(fileHeader.getVersion()));\r
                        table.setText(i, 5, String.valueOf(fileHeader.getFileSizeAsString()));\r
                        final DateTimeFormat formatter = DateTimeFormat.getFormat("d/M/yyyy h:mm a");\r
-                       table.setText(i, 6, formatter.format(fileHeader.getCreationDate()));\r
+                       table.setText(i, 6, formatter.format(fileHeader.getModificationDate()));\r
                        folderTotalSize += fileHeader.getContentLength();\r
                }\r
 \r
@@ -580,16 +635,13 @@ public class SearchResults extends Composite implements TableListener, ClickList
        public void updateFileCache(String query) {\r
                final GSS app = GSS.get();\r
                clearSelectedRows();\r
-               sortingProperty = "name";\r
                clearLabels();\r
-               nameLabel.setHTML("Name&nbsp;" + images.desc().getHTML());\r
-               sortingType = true;\r
                startIndex = 0;\r
                app.showLoadingIndicator();\r
                if (query == null || query.trim().equals("")) {\r
                        searchResults.setHTML("You must specify a query");\r
                        setFiles(new ArrayList());\r
-                       update();\r
+                       update(true);\r
                        app.hideLoadingIndicator();\r
                } else{\r
                        searchResults.setHTML("Search results for " + query);\r
@@ -601,7 +653,7 @@ public class SearchResults extends Composite implements TableListener, ClickList
                                public void onComplete() {\r
                                        SearchResource s = getResult();\r
                                        setFiles(s.getFiles());\r
-                                       update();\r
+                                       update(true);\r
                                }\r
 \r
                                @Override\r
@@ -644,69 +696,14 @@ public class SearchResults extends Composite implements TableListener, ClickList
                        sortingProperty = sortProperty;\r
                        sortingType = true;\r
                }\r
-               clearLabels();\r
-               clearSelectedRows();\r
-               if (files == null || files.size() == 0)\r
-                       return;\r
-               Collections.sort(files, new Comparator<FileResource>() {\r
-\r
-                       public int compare(FileResource arg0, FileResource arg1) {\r
-                               if (sortingType)\r
-                                       if (sortProperty.equals("version")) {\r
-                                               versionLabel.setHTML("Version&nbsp;" + images.desc().getHTML());\r
-                                               return new Integer(arg0.getVersion()).compareTo(new Integer(arg1.getVersion()));\r
-                                       } else if (sortProperty.equals("owner")) {\r
-                                               ownerLabel.setHTML("Owner&nbsp;" + images.desc().getHTML());\r
-                                               GWT.log(arg0.getOwner() + "/" + arg1.getOwner(), null);\r
-                                               return arg0.getOwner().compareTo(arg1.getOwner());\r
-                                       } else if (sortProperty.equals("date")) {\r
-                                               dateLabel.setHTML("Date&nbsp;" + images.desc().getHTML());\r
-                                               return arg0.getCreationDate().compareTo(arg1.getCreationDate());\r
-                                       } else if (sortProperty.equals("size")) {\r
-                                               sizeLabel.setHTML("Size&nbsp;" + images.desc().getHTML());\r
-                                               return new Long(arg0.getContentLength()).compareTo(new Long(arg1.getContentLength()));\r
-                                       } else if (sortProperty.equals("name")) {\r
-                                               nameLabel.setHTML("Name&nbsp;" + images.desc().getHTML());\r
-                                               return arg0.getName().compareTo(arg1.getName());\r
-                                       } else if (sortProperty.equals("path")) {\r
-                                               pathLabel.setHTML("Path&nbsp;" + images.desc().getHTML());\r
-                                               return arg0.getUri().compareTo(arg1.getUri());\r
-                                       } else {\r
-                                               nameLabel.setHTML("Name&nbsp;" + images.desc().getHTML());\r
-                                               return arg0.getName().compareTo(arg1.getName());\r
-                                       }\r
-                               else if (sortProperty.equals("version")) {\r
-                                       versionLabel.setHTML("Version&nbsp;" + images.asc().getHTML());\r
-                                       return new Integer(arg1.getVersion()).compareTo(new Integer(arg0.getVersion()));\r
-                               } else if (sortProperty.equals("owner")) {\r
-                                       ownerLabel.setHTML("Owner&nbsp;" + images.asc().getHTML());\r
-                                       return arg1.getOwner().compareTo(arg0.getOwner());\r
-                               } else if (sortProperty.equals("date")) {\r
-                                       dateLabel.setHTML("Date&nbsp;" + images.asc().getHTML());\r
-                                       return arg1.getCreationDate().compareTo(arg0.getCreationDate());\r
-                               } else if (sortProperty.equals("size")) {\r
-                                       sizeLabel.setHTML("Size&nbsp;" + images.asc().getHTML());\r
-                                       return new Long(arg1.getContentLength()).compareTo(new Long(arg0.getContentLength()));\r
-                               } else if (sortProperty.equals("name")) {\r
-                                       nameLabel.setHTML("Name&nbsp;" + images.asc().getHTML());\r
-                                       return arg1.getName().compareTo(arg0.getName());\r
-                               } else if (sortProperty.equals("path")) {\r
-                                       pathLabel.setHTML("Path&nbsp;" + images.asc().getHTML());\r
-                                       return arg1.getUri().compareTo(arg0.getUri());\r
-                               } else {\r
-                                       nameLabel.setHTML("Name&nbsp;" + images.asc().getHTML());\r
-                                       return arg1.getName().compareTo(arg0.getName());\r
-                               }\r
-                       }\r
-\r
-               });\r
+               update(true);\r
        }\r
 \r
        private void clearLabels() {\r
                nameLabel.setText("Name");\r
                versionLabel.setText("Version");\r
                sizeLabel.setText("Size");\r
-               dateLabel.setText("Date");\r
+               dateLabel.setText("Last modified");\r
                ownerLabel.setText("Owner");\r
                pathLabel.setText("Path");\r
        }\r
@@ -737,7 +734,7 @@ public class SearchResults extends Composite implements TableListener, ClickList
                for (int r : selectedRows) {\r
                        int row = r - startIndex;\r
                        styleRow(row, false);\r
-                       table.setWidget(row + 1, 0, images.document().createImage());\r
+                       table.setWidget(row + 1, 0, AbstractImagePrototype.create(images.document()).createImage());\r
                }\r
                selectedRows.clear();\r
                Object sel = GSS.get().getCurrentSelection();\r