[jboss-svn-commits] JBL Code SVN: r35525 - in labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client: explorer and 1 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Fri Oct 15 02:26:59 EDT 2010


Author: Rikkola
Date: 2010-10-15 02:26:59 -0400 (Fri, 15 Oct 2010)
New Revision: 35525

Added:
   labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/common/HeaderHTML.java
   labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/common/HeaderHTML.ui.xml
   labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/explorer/NavigationPanel.java
   labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/explorer/TitlePanel.java
Modified:
   labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/common/Util.java
   labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/explorer/AbstractTree.java
   labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/explorer/AdministrationTree.java
   labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/explorer/BrowseTree.java
   labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/explorer/DeploymentTree.java
   labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/explorer/ExplorerLayoutManager.java
   labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/explorer/ExplorerViewCenterPanel.java
   labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/explorer/MultiKeyMap.java
   labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/explorer/PackagesTree.java
   labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/explorer/QATree.java
   labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/images/Images.java
Log:
Some code cleaning around NavigationPanel

Added: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/common/HeaderHTML.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/common/HeaderHTML.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/common/HeaderHTML.java	2010-10-15 06:26:59 UTC (rev 35525)
@@ -0,0 +1,54 @@
+/*
+ * Copyright 2010 JBoss Inc
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.drools.guvnor.client.common;
+
+import com.google.gwt.core.client.GWT;
+import com.google.gwt.resources.client.ImageResource;
+import com.google.gwt.uibinder.client.UiBinder;
+import com.google.gwt.uibinder.client.UiField;
+import com.google.gwt.user.client.ui.Composite;
+import com.google.gwt.user.client.ui.Image;
+import com.google.gwt.user.client.ui.Label;
+import com.google.gwt.user.client.ui.Widget;
+
+public class HeaderHTML extends Composite {
+
+    interface HeaderHTMLBinder
+        extends
+        UiBinder<Widget, HeaderHTML> {
+    }
+
+    private static HeaderHTMLBinder uiBinder = GWT.create( HeaderHTMLBinder.class );
+
+    @UiField
+    Label                           textLabel;
+
+    @UiField
+    Image                           image;
+
+    public HeaderHTML() {
+        initWidget( uiBinder.createAndBindUi( this ) );
+
+    }
+
+    public void setText(String text) {
+        textLabel.setText( text );
+    }
+
+    public void setImageResource(ImageResource imageResource) {
+        image.setResource( imageResource );
+    }
+}

Added: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/common/HeaderHTML.ui.xml
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/common/HeaderHTML.ui.xml	                        (rev 0)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/common/HeaderHTML.ui.xml	2010-10-15 06:26:59 UTC (rev 35525)
@@ -0,0 +1,24 @@
+<!--
+  Copyright 2010 JBoss Inc
+ 
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+ 
+       http://www.apache.org/licenses/LICENSE-2.0
+ 
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+ -->
+<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent">
+<ui:UiBinder xmlns:ui='urn:ui:com.google.gwt.uibinder'
+	xmlns:gwt='urn:import:com.google.gwt.user.client.ui' xmlns:guvnor='urn:import:org.drools.guvnor.client.common'>
+
+	<gwt:HorizontalPanel>
+		<gwt:Image ui:field="image"></gwt:Image>
+		<gwt:Label ui:field="textLabel"></gwt:Label>
+	</gwt:HorizontalPanel>
+</ui:UiBinder>
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/common/Util.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/common/Util.java	2010-10-15 05:42:54 UTC (rev 35524)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/common/Util.java	2010-10-15 06:26:59 UTC (rev 35525)
@@ -1,4 +1,4 @@
-/**
+/*
  * Copyright 2010 JBoss Inc
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -18,29 +18,10 @@
 
 import com.google.gwt.resources.client.ImageResource;
 import com.google.gwt.user.client.ui.AbstractImagePrototype;
-/*
- * Copyright 2005 JBoss Inc
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
 import com.google.gwt.user.client.ui.HTML;
-import com.google.gwt.user.client.ui.HasVerticalAlignment;
-import com.google.gwt.user.client.ui.HorizontalPanel;
-import com.google.gwt.user.client.ui.Image;
 
-
 public class Util {
-    
+
     /**
      * Get a string representation of the header that includes an image and some
      * text.
@@ -49,10 +30,11 @@
      * @param text the header text
      * @return the header as a string
      */
-    public static String getHeader(ImageResource image, String text) {
-       return AbstractImagePrototype.create(image).getHTML() + " " + text;
+    public static String getHeader(ImageResource image,
+                                   String text) {
+        return AbstractImagePrototype.create( image ).getHTML() + " " + text;
     }
-    
+
     /**
      * Get a string representation of the header that includes an image and some
      * text.
@@ -61,17 +43,14 @@
      * @param text the header text
      * @return the header as a string
      */
-    public static HTML getHeaderHTML(ImageResource image, String text) {
-      // Add the image and text to a horizontal panel
-      HorizontalPanel hPanel = new HorizontalPanel();
-      hPanel.setSpacing(0);
-      hPanel.setVerticalAlignment(HasVerticalAlignment.ALIGN_MIDDLE);
-      hPanel.add(new Image(image));
-      HTML headerText = new HTML(text);
-      headerText.setStyleName("cw-StackPanelHeader");
-      hPanel.add(headerText);
+    public static HTML getHeaderHTML(ImageResource image,
+                                     String text) {
 
-      // Return the HTML string for the panel
-      return new HTML(hPanel.getElement().getString());
+        HeaderHTML headerHTML = new HeaderHTML();
+
+        headerHTML.setText( text );
+        headerHTML.setImageResource( image );
+
+        return new HTML( headerHTML.getElement().getString() );
     }
 }
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/explorer/AbstractTree.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/explorer/AbstractTree.java	2010-10-15 05:42:54 UTC (rev 35524)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/explorer/AbstractTree.java	2010-10-15 06:26:59 UTC (rev 35525)
@@ -1,7 +1,11 @@
 package org.drools.guvnor.client.explorer;
 
+import java.util.HashMap;
+import java.util.Map;
+
 import com.google.gwt.event.logical.shared.SelectionHandler;
 import com.google.gwt.resources.client.ImageResource;
+import com.google.gwt.user.client.ui.Composite;
 import com.google.gwt.user.client.ui.HTML;
 import com.google.gwt.user.client.ui.Tree;
 import com.google.gwt.user.client.ui.TreeItem;
@@ -11,53 +15,66 @@
 import org.drools.guvnor.client.ruleeditor.NewAssetWizard;
 import org.drools.guvnor.client.rulelist.EditItemEvent;
 
-public abstract class AbstractTree implements SelectionHandler<TreeItem> {
-	protected String name;
-	protected ImageResource image;
+public abstract class AbstractTree extends Composite
+    implements
+    SelectionHandler<TreeItem> {
+    protected String                  name;
+    protected ImageResource           image;
 
-	protected ExplorerViewCenterPanel centertabbedPanel;
-	protected Tree mainTree;
+    protected ExplorerViewCenterPanel centertabbedPanel;
+    protected final Tree              mainTree;
 
-	/**
-	 * Constructor.
-	 * 
-	 * @param ExplorerViewCenterPanel
-	 *            the centertabbedPanel
-	 */
-	public AbstractTree(ExplorerViewCenterPanel centertabbedPanel) {
-		this.centertabbedPanel = centertabbedPanel;
-	}
+    protected Map<TreeItem, String>   itemWidgets = new HashMap<TreeItem, String>();
 
-	/**
-	 * Get a string representation of the header that includes an image and some
-	 * text.
-	 * @return the header as a string
-	 */
-	public HTML getHeaderHTML() {
-		return Util.getHeaderHTML(image, name);
-	}
+    /**
+     * Constructor.
+     * 
+     * @param ExplorerViewCenterPanel
+     *            the centertabbedPanel
+     */
+    public AbstractTree(ExplorerViewCenterPanel centertabbedPanel) {
+        this.centertabbedPanel = centertabbedPanel;
 
-	public void refreshTree() {
-		
-	}
-	
-	protected void launchWizard(String format, String title, boolean showCats) {
-		NewAssetWizard pop = new NewAssetWizard(new EditItemEvent() {
-			public void open(String key) {
-				centertabbedPanel.openAsset(key);
-			}
+        mainTree = getTree();
 
-			public void open(MultiViewRow[] rows) {
-				for (MultiViewRow row : rows) {
-					centertabbedPanel.openAsset(row.uuid);
-				}
-			}
-		}, showCats, format, title);
+        initWidget( mainTree );
+    }
 
-		pop.show();
-	}	
-    
-    public Tree getTree() {
-    	return mainTree;
+    abstract Tree getTree();
+
+    /**
+     * Get a string representation of the header that includes an image and some
+     * text.
+     * @return the header as a string
+     */
+    public HTML getHeaderHTML() {
+        return Util.getHeaderHTML( image,
+                                   name );
     }
+
+    public void refreshTree() {
+
+    }
+
+    protected void launchWizard(String format,
+                                String title,
+                                boolean showCats) {
+        NewAssetWizard pop = new NewAssetWizard( new EditItemEvent() {
+                                                     public void open(String key) {
+                                                         centertabbedPanel.openAsset( key );
+                                                     }
+
+                                                     public void open(MultiViewRow[] rows) {
+                                                         for ( MultiViewRow row : rows ) {
+                                                             centertabbedPanel.openAsset( row.uuid );
+                                                         }
+                                                     }
+                                                 },
+                                                 showCats,
+                                                 format,
+                                                 title );
+
+        pop.show();
+    }
+
 }

Modified: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/explorer/AdministrationTree.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/explorer/AdministrationTree.java	2010-10-15 05:42:54 UTC (rev 35524)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/explorer/AdministrationTree.java	2010-10-15 06:26:59 UTC (rev 35525)
@@ -16,15 +16,13 @@
 
 package org.drools.guvnor.client.explorer;
 
-import java.util.HashMap;
-import java.util.Map;
-
 import org.drools.guvnor.client.admin.ArchivedAssetManager;
 import org.drools.guvnor.client.admin.BackupManager;
 import org.drools.guvnor.client.admin.CategoryManager;
 import org.drools.guvnor.client.admin.LogViewer;
 import org.drools.guvnor.client.admin.PermissionViewer;
 import org.drools.guvnor.client.admin.RepoConfigManager;
+import org.drools.guvnor.client.admin.RuleVerifierManager;
 import org.drools.guvnor.client.admin.StateManager;
 import org.drools.guvnor.client.common.FormStylePopup;
 import org.drools.guvnor.client.common.SmallLabel;
@@ -34,27 +32,27 @@
 import com.google.gwt.core.client.GWT;
 import com.google.gwt.event.logical.shared.SelectionEvent;
 import com.google.gwt.user.client.ui.Frame;
+import com.google.gwt.user.client.ui.Tree;
 import com.google.gwt.user.client.ui.TreeItem;
 
-import org.drools.guvnor.client.admin.RuleVerifierManager;
-
 public class AdministrationTree extends AbstractTree {
-    private static Constants      constants   = GWT.create( Constants.class );
-    private static Images         images      = (Images) GWT.create( Images.class );
+    private static Constants constants = GWT.create( Constants.class );
+    private static Images    images    = (Images) GWT.create( Images.class );
 
-    private Map<TreeItem, String> itemWidgets = new HashMap<TreeItem, String>();
-
     public AdministrationTree(ExplorerViewCenterPanel tabbedPanel) {
         super( tabbedPanel );
         this.name = constants.Administration();
         this.image = images.rules();
 
-        mainTree = ExplorerNodeConfig.getAdminStructure( itemWidgets );
-
         //Add Selection listener
         mainTree.addSelectionHandler( this );
     }
 
+    @Override
+    Tree getTree() {
+        return ExplorerNodeConfig.getAdminStructure( itemWidgets );
+    }
+
     // Show the associated widget in the deck panel
     public void onSelection(SelectionEvent<TreeItem> event) {
         TreeItem item = event.getSelectedItem();

Modified: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/explorer/BrowseTree.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/explorer/BrowseTree.java	2010-10-15 05:42:54 UTC (rev 35524)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/explorer/BrowseTree.java	2010-10-15 06:26:59 UTC (rev 35525)
@@ -38,203 +38,235 @@
 import com.google.gwt.event.logical.shared.OpenHandler;
 import com.google.gwt.event.logical.shared.SelectionEvent;
 
+public class BrowseTree extends AbstractTree
+    implements
+    OpenHandler<TreeItem> {
+    private static Constants constants = GWT.create( Constants.class );
+    private static Images    images    = (Images) GWT.create( Images.class );
 
-public class BrowseTree extends AbstractTree implements OpenHandler<TreeItem> {
-    private static Constants constants = GWT.create(Constants.class);
-    private static Images images = (Images) GWT.create(Images.class);       
+    /** Table set up for the inboxes */
+    static {
+        TableConfig conf = new TableConfig();
+        conf.headers = new String[2];
+        conf.headers[0] = constants.Name();// "Name ";
+        conf.headers[1] = constants.Date();// "Date ";
+        conf.headerTypes = new String[2];
+        conf.headerTypes[0] = "class java.lang.String";
+        conf.headerTypes[1] = "class java.util.Calendar";
+        conf.rowsPerPage = 500;
+        AssetItemGrid.registerTableConf( conf,
+                                         ExplorerNodeConfig.RECENT_EDITED_ID );
+        AssetItemGrid.registerTableConf( conf,
+                                         ExplorerNodeConfig.RECENT_VIEWED_ID );
 
-    private Map<TreeItem, String> itemWidgets = new HashMap<TreeItem, String>();
+        conf = new TableConfig();
+        conf.headers = new String[3];
+        conf.headers[0] = constants.Name();
+        conf.headers[1] = constants.Date();
+        conf.headers[2] = constants.From();
+        conf.headerTypes = new String[3];
+        conf.headerTypes[0] = "class java.lang.String";
+        conf.headerTypes[1] = "class java.util.Calendar";
+        conf.headerTypes[2] = "class java.lang.String";
+        conf.rowsPerPage = 500;
 
+        AssetItemGrid.registerTableConf( conf,
+                                         ExplorerNodeConfig.INCOMING_ID );
+    }
 
-    /** Table set up for the inboxes */
-	static {
-		TableConfig conf = new TableConfig();
-		conf.headers = new String[2];
-		conf.headers[0] = constants.Name();// "Name ";
-		conf.headers[1] = constants.Date();// "Date ";
-		conf.headerTypes = new String[2];
-		conf.headerTypes[0] = "class java.lang.String";
-		conf.headerTypes[1] = "class java.util.Calendar";
-		conf.rowsPerPage = 500;
-		AssetItemGrid.registerTableConf(conf, ExplorerNodeConfig.RECENT_EDITED_ID);
-		AssetItemGrid.registerTableConf(conf, ExplorerNodeConfig.RECENT_VIEWED_ID);
-
-		conf = new TableConfig();
-		conf.headers = new String[3];
-		conf.headers[0] = constants.Name();
-		conf.headers[1] = constants.Date();
-		conf.headers[2] = constants.From();
-		conf.headerTypes = new String[3];
-		conf.headerTypes[0] = "class java.lang.String";
-		conf.headerTypes[1] = "class java.util.Calendar";
-		conf.headerTypes[2] = "class java.lang.String";
-		conf.rowsPerPage = 500;
-
-		AssetItemGrid.registerTableConf(conf, ExplorerNodeConfig.INCOMING_ID);
-	}
-       
     public BrowseTree(ExplorerViewCenterPanel tabbedPanel) {
-        super(tabbedPanel);
+        super( tabbedPanel );
         this.name = constants.Browse();
         this.image = images.ruleAsset();
-        
-    	mainTree = new Tree();    	
-    	mainTree.setAnimationEnabled(true);
-    	ExplorerNodeConfig.setupBrowseTree(mainTree, itemWidgets);
-        mainTree.addSelectionHandler(this);
-        mainTree.addOpenHandler((OpenHandler<TreeItem>)this);       
+
+        mainTree.setAnimationEnabled( true );
+        ExplorerNodeConfig.setupBrowseTree( mainTree,
+                                            itemWidgets );
+        mainTree.addSelectionHandler( this );
+        mainTree.addOpenHandler( (OpenHandler<TreeItem>) this );
     }
 
+    @Override
+    protected Tree getTree() {
+        return new Tree();
+    }
+
     public void refreshTree() {
-    	mainTree.clear();    	
-    	itemWidgets.clear();
-    	ExplorerNodeConfig.setupBrowseTree(mainTree, itemWidgets);
+        mainTree.clear();
+        itemWidgets.clear();
+        ExplorerNodeConfig.setupBrowseTree( mainTree,
+                                            itemWidgets );
     }
-    
+
     // Show the associated widget in the deck panel
     public void onSelection(SelectionEvent<TreeItem> event) {
         TreeItem item = event.getSelectedItem();
-        String widgetID = itemWidgets.get(item);
-        	
-        if (widgetID.equals(ExplorerNodeConfig.FIND_ID)) {     
+        String widgetID = itemWidgets.get( item );
+
+        if ( widgetID.equals( ExplorerNodeConfig.FIND_ID ) ) {
             centertabbedPanel.openFind();
-        } else if (widgetID.equals(ExplorerNodeConfig.INCOMING_ID) || 
-        		widgetID.equals(ExplorerNodeConfig.RECENT_EDITED_ID) ||
-        		widgetID.equals(ExplorerNodeConfig.RECENT_VIEWED_ID)) {
-       		openInbox(item.getText(), widgetID);
-        } else if (widgetID.startsWith(ExplorerNodeConfig.STATES_ID)){
-            openState(item.getText(), widgetID);
-        } else if (widgetID.startsWith(ExplorerNodeConfig.CATEGORY_ID)){
-            openCategory(item.getText(), widgetID);
+        } else if ( widgetID.equals( ExplorerNodeConfig.INCOMING_ID ) || widgetID.equals( ExplorerNodeConfig.RECENT_EDITED_ID ) || widgetID.equals( ExplorerNodeConfig.RECENT_VIEWED_ID ) ) {
+            openInbox( item.getText(),
+                       widgetID );
+        } else if ( widgetID.startsWith( ExplorerNodeConfig.STATES_ID ) ) {
+            openState( item.getText(),
+                       widgetID );
+        } else if ( widgetID.startsWith( ExplorerNodeConfig.CATEGORY_ID ) ) {
+            openCategory( item.getText(),
+                          widgetID );
         }
-    }  
+    }
 
-	public void onOpen(OpenEvent<TreeItem> event) {
-		final TreeItem node = event.getTarget();
-		if (ExplorerNodeConfig.STATES_ROOT_ID.equals(itemWidgets.get(node))) { 
-			removeStateIDs(itemWidgets);
-			node.removeItems();
-			ExplorerNodeConfig.setupStatesStructure(node, itemWidgets);
-		} else if (ExplorerNodeConfig.CATEGORY_ROOT_ID.equals(itemWidgets.get(node))) { 
-			removeCategoryIDs(itemWidgets);
-			node.removeItems();
-			ExplorerNodeConfig.setupCategoriesStructure(node, itemWidgets);
-		}		
-	}
-		
-	private void removeStateIDs(Map<TreeItem, String> itemWidgets) {
-		Iterator<TreeItem> it = itemWidgets.keySet().iterator();		
-		while(it.hasNext()) {
-			TreeItem item = (TreeItem)it.next();
-		    String id = itemWidgets.get(item);
-			if(id.startsWith(ExplorerNodeConfig.STATES_ID + "-")) {
-				it.remove();
-			}			
-		}
-	}
-	
-	private void removeCategoryIDs(Map<TreeItem, String> itemWidgets) {
-		Iterator<TreeItem> it = itemWidgets.keySet().iterator();		
-		while(it.hasNext()) {
-			TreeItem item = (TreeItem)it.next();
-		    String id = itemWidgets.get(item);
-			if(id.startsWith(ExplorerNodeConfig.CATEGORY_ID + "-")) {
-				it.remove();
-			}			
-		}	
-	}
-	
+    public void onOpen(OpenEvent<TreeItem> event) {
+        final TreeItem node = event.getTarget();
+        if ( ExplorerNodeConfig.STATES_ROOT_ID.equals( itemWidgets.get( node ) ) ) {
+            removeStateIDs( itemWidgets );
+            node.removeItems();
+            ExplorerNodeConfig.setupStatesStructure( node,
+                                                     itemWidgets );
+        } else if ( ExplorerNodeConfig.CATEGORY_ROOT_ID.equals( itemWidgets.get( node ) ) ) {
+            removeCategoryIDs( itemWidgets );
+            node.removeItems();
+            ExplorerNodeConfig.setupCategoriesStructure( node,
+                                                         itemWidgets );
+        }
+    }
+
+    private void removeStateIDs(Map<TreeItem, String> itemWidgets) {
+        Iterator<TreeItem> it = itemWidgets.keySet().iterator();
+        while ( it.hasNext() ) {
+            TreeItem item = (TreeItem) it.next();
+            String id = itemWidgets.get( item );
+            if ( id.startsWith( ExplorerNodeConfig.STATES_ID + "-" ) ) {
+                it.remove();
+            }
+        }
+    }
+
+    private void removeCategoryIDs(Map<TreeItem, String> itemWidgets) {
+        Iterator<TreeItem> it = itemWidgets.keySet().iterator();
+        while ( it.hasNext() ) {
+            TreeItem item = (TreeItem) it.next();
+            String id = itemWidgets.get( item );
+            if ( id.startsWith( ExplorerNodeConfig.CATEGORY_ID + "-" ) ) {
+                it.remove();
+            }
+        }
+    }
+
     /**
      * Show the inbox of the given name.
      */
-    private void openInbox(String title, final String widgetID) {   	
-        if (!centertabbedPanel.showIfOpen(widgetID)) {
-            AssetItemGrid g = new AssetItemGrid(createEditEvent(), widgetID, new AssetItemGridDataLoader() {
-                public void loadData(int startRow, int numberOfRows, GenericCallback<TableDataResult> cb) {
-                    RepositoryServiceFactory.getService().loadInbox(widgetID, cb);
-                }
-            });
-            centertabbedPanel.addTab(title, g, widgetID);
+    private void openInbox(String title,
+                           final String widgetID) {
+        if ( !centertabbedPanel.showIfOpen( widgetID ) ) {
+            AssetItemGrid g = new AssetItemGrid( createEditEvent(),
+                                                 widgetID,
+                                                 new AssetItemGridDataLoader() {
+                                                     public void loadData(int startRow,
+                                                                          int numberOfRows,
+                                                                          GenericCallback<TableDataResult> cb) {
+                                                         RepositoryServiceFactory.getService().loadInbox( widgetID,
+                                                                                                          cb );
+                                                     }
+                                                 } );
+            centertabbedPanel.addTab( title,
+                                      g,
+                                      widgetID );
         }
     }
 
     /**
      * open a state or category !
      */
-    private void openState(String title, String widgetID) {
-        if (!centertabbedPanel.showIfOpen(widgetID)) {
-        	final String stateName = widgetID.substring(widgetID.indexOf("-") + 1);
-       	    final AssetItemGrid list = new AssetItemGrid(createEditEvent(),
-                    AssetItemGrid.RULE_LIST_TABLE_ID,
-                    new AssetItemGridDataLoader() {
-                        public void loadData(int skip, int numberOfRows, GenericCallback cb) {
-                             RepositoryServiceFactory.getService().
-                                        loadRuleListForState(stateName, skip,
-                                                numberOfRows, AssetItemGrid.RULE_LIST_TABLE_ID, cb);
-                            
-                        }
-                    },
-                    null);
-           final ServerPushNotification push = new ServerPushNotification() {
+    private void openState(String title,
+                           String widgetID) {
+        if ( !centertabbedPanel.showIfOpen( widgetID ) ) {
+            final String stateName = widgetID.substring( widgetID.indexOf( "-" ) + 1 );
+            final AssetItemGrid list = new AssetItemGrid( createEditEvent(),
+                                                          AssetItemGrid.RULE_LIST_TABLE_ID,
+                                                          new AssetItemGridDataLoader() {
+                                                              public void loadData(int skip,
+                                                                                   int numberOfRows,
+                                                                                   GenericCallback cb) {
+                                                                  RepositoryServiceFactory.getService().loadRuleListForState( stateName,
+                                                                                                                              skip,
+                                                                                                                              numberOfRows,
+                                                                                                                              AssetItemGrid.RULE_LIST_TABLE_ID,
+                                                                                                                              cb );
+
+                                                              }
+                                                          },
+                                                          null );
+            final ServerPushNotification push = new ServerPushNotification() {
                 public void messageReceived(PushResponse response) {
-                        if (response.messageType.equals("statusChange") && (response.message).equals(stateName)) {
-                            list.refreshGrid();
-                        }
+                    if ( response.messageType.equals( "statusChange" ) && (response.message).equals( stateName ) ) {
+                        list.refreshGrid();
+                    }
                 }
             };
-            PushClient.instance().subscribe(push);
-            list.addUnloadListener(new Command() {
+            PushClient.instance().subscribe( push );
+            list.addUnloadListener( new Command() {
                 public void execute() {
-                    PushClient.instance().unsubscribe(push);
+                    PushClient.instance().unsubscribe( push );
                 }
-            });
+            } );
 
-            centertabbedPanel.addTab(constants.Status() + title, list, widgetID);
+            centertabbedPanel.addTab( constants.Status() + title,
+                                      list,
+                                      widgetID );
         }
     }
 
     /**
      * open a category 
      */
-    private void openCategory(String title, String widgetID) {
-        if (!centertabbedPanel.showIfOpen(widgetID)) {
-    	    final String categoryName = widgetID.substring(widgetID.indexOf("-") + 1);
-            final AssetItemGrid list = new AssetItemGrid(createEditEvent(),
-                    AssetItemGrid.RULE_LIST_TABLE_ID,
-                    new AssetItemGridDataLoader() {
-                        public void loadData(int skip, int numberOfRows, GenericCallback cb) {
-                                RepositoryServiceFactory.getService().
-                                        loadRuleListForCategories(categoryName, skip, numberOfRows,
-                                                AssetItemGrid.RULE_LIST_TABLE_ID, cb);                           
-                        }
-                    },
-                    GWT.getModuleBaseURL() + "feed/category?name=" + categoryName + "&viewUrl=" + getSelfURL());
-           final ServerPushNotification push = new ServerPushNotification() {
+    private void openCategory(String title,
+                              String widgetID) {
+        if ( !centertabbedPanel.showIfOpen( widgetID ) ) {
+            final String categoryName = widgetID.substring( widgetID.indexOf( "-" ) + 1 );
+            final AssetItemGrid list = new AssetItemGrid( createEditEvent(),
+                                                          AssetItemGrid.RULE_LIST_TABLE_ID,
+                                                          new AssetItemGridDataLoader() {
+                                                              public void loadData(int skip,
+                                                                                   int numberOfRows,
+                                                                                   GenericCallback cb) {
+                                                                  RepositoryServiceFactory.getService().loadRuleListForCategories( categoryName,
+                                                                                                                                   skip,
+                                                                                                                                   numberOfRows,
+                                                                                                                                   AssetItemGrid.RULE_LIST_TABLE_ID,
+                                                                                                                                   cb );
+                                                              }
+                                                          },
+                                                          GWT.getModuleBaseURL() + "feed/category?name=" + categoryName + "&viewUrl=" + getSelfURL() );
+            final ServerPushNotification push = new ServerPushNotification() {
                 public void messageReceived(PushResponse response) {
-                        if (response.messageType.equals("categoryChange") && response.message.equals(categoryName)) {
-                            list.refreshGrid();
-                        }
+                    if ( response.messageType.equals( "categoryChange" ) && response.message.equals( categoryName ) ) {
+                        list.refreshGrid();
+                    }
                 }
             };
-            PushClient.instance().subscribe(push);
-            list.addUnloadListener(new Command() {
+            PushClient.instance().subscribe( push );
+            list.addUnloadListener( new Command() {
                 public void execute() {
-                    PushClient.instance().unsubscribe(push);
+                    PushClient.instance().unsubscribe( push );
                 }
-            });
+            } );
 
-            centertabbedPanel.addTab((constants.CategoryColon()) + title, list, widgetID);
+            centertabbedPanel.addTab( (constants.CategoryColon()) + title,
+                                      list,
+                                      widgetID );
         }
     }
-    
+
     private EditItemEvent createEditEvent() {
         return new EditItemEvent() {
             public void open(String uuid) {
-                centertabbedPanel.openAsset(uuid);
+                centertabbedPanel.openAsset( uuid );
             }
 
             public void open(MultiViewRow[] rows) {
-                for ( MultiViewRow row: rows) {
+                for ( MultiViewRow row : rows ) {
                     centertabbedPanel.openAsset( row.uuid );
                 }
             }
@@ -247,8 +279,9 @@
      */
     public static String getSelfURL() {
         String selfURL = Window.Location.getHref();
-        if (selfURL.contains("#")) {
-            selfURL = selfURL.substring(0, selfURL.indexOf("#"));
+        if ( selfURL.contains( "#" ) ) {
+            selfURL = selfURL.substring( 0,
+                                         selfURL.indexOf( "#" ) );
         }
         return selfURL;
     }

Modified: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/explorer/DeploymentTree.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/explorer/DeploymentTree.java	2010-10-15 05:42:54 UTC (rev 35524)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/explorer/DeploymentTree.java	2010-10-15 06:26:59 UTC (rev 35525)
@@ -33,72 +33,78 @@
 import com.google.gwt.user.client.ui.Tree;
 import com.google.gwt.user.client.ui.TreeItem;
 
+public class DeploymentTree extends AbstractTree
+    implements
+    OpenHandler<TreeItem> {
+    private static Constants constants                = GWT.create( Constants.class );
+    private static Images    images                   = (Images) GWT.create( Images.class );
 
-public class DeploymentTree extends AbstractTree implements OpenHandler<TreeItem> {
-    private static Constants constants = GWT.create(Constants.class);
-    private static Images images = (Images) GWT.create(Images.class);       
+    private boolean          deploymentPackagesLoaded = false;
 
-    private Map<TreeItem, String> itemWidgets = new HashMap<TreeItem, String>();
-
-    private boolean deploymentPackagesLoaded = false;
-    
     public DeploymentTree(ExplorerViewCenterPanel tabbedPanel) {
-        super(tabbedPanel);
+        super( tabbedPanel );
         this.name = constants.PackageSnapshots();
         this.image = images.deploy();
-        
-    	mainTree = new Tree();    	
-    	mainTree.setAnimationEnabled(true);
-        ExplorerNodeConfig.setupDeploymentTree(mainTree, itemWidgets);
-        mainTree.addSelectionHandler(this);
-        mainTree.addOpenHandler((OpenHandler<TreeItem>)this);      
-    }    
 
+        mainTree.setAnimationEnabled( true );
+        ExplorerNodeConfig.setupDeploymentTree( mainTree,
+                                                itemWidgets );
+        mainTree.addSelectionHandler( this );
+        mainTree.addOpenHandler( (OpenHandler<TreeItem>) this );
+    }
+
+    @Override
+    Tree getTree() {
+        return new Tree();
+    }
+
     public void refreshTree() {
-    	mainTree.clear(); 
-    	itemWidgets.clear();
-    	ExplorerNodeConfig.setupDeploymentTree(mainTree, itemWidgets);
+        mainTree.clear();
+        itemWidgets.clear();
+        ExplorerNodeConfig.setupDeploymentTree( mainTree,
+                                                itemWidgets );
     }
-    
+
     public void onSelection(SelectionEvent<TreeItem> event) {
         TreeItem item = event.getSelectedItem();
-        
-        if (item.getUserObject() instanceof Object[]) {
+
+        if ( item.getUserObject() instanceof Object[] ) {
             Object[] o = (Object[]) item.getUserObject();
-            final String snapName = ((SnapshotInfo)o[0]).name;
-            PackageConfigData conf = (PackageConfigData)o[1];
-            RepositoryServiceFactory.getService().listSnapshots(conf.name, new GenericCallback<SnapshotInfo[]>() {
-                public void onSuccess(SnapshotInfo[] a) {
-                    for(SnapshotInfo snap : a) {
-                    	if (snap.name.equals(snapName)) {
-                    		centertabbedPanel.openSnapshot(snap);
-                    		return;
-                    	}
-                    }
-                }
-            });
+            final String snapName = ((SnapshotInfo) o[0]).name;
+            PackageConfigData conf = (PackageConfigData) o[1];
+            RepositoryServiceFactory.getService().listSnapshots( conf.name,
+                                                                 new GenericCallback<SnapshotInfo[]>() {
+                                                                     public void onSuccess(SnapshotInfo[] a) {
+                                                                         for ( SnapshotInfo snap : a ) {
+                                                                             if ( snap.name.equals( snapName ) ) {
+                                                                                 centertabbedPanel.openSnapshot( snap );
+                                                                                 return;
+                                                                             }
+                                                                         }
+                                                                     }
+                                                                 } );
         }
     }
-    
-	public void onOpen(OpenEvent<TreeItem> event) {
-		final TreeItem node = event.getTarget();
-		if (ExplorerNodeConfig.PACKAGE_SNAPSHOTS.equals(itemWidgets.get(node))) { 
-			return;
-		}
-		final PackageConfigData conf = (PackageConfigData) node.getUserObject();
-		if (conf != null) {
-			RepositoryServiceFactory.getService().listSnapshots(conf.name,
-					new GenericCallback<SnapshotInfo[]>() {
-						public void onSuccess(SnapshotInfo[] snaps) {
-							node.removeItems();
-							for (final SnapshotInfo snapInfo : snaps) {
-								TreeItem snap = new TreeItem(snapInfo.name);
-								//snap.setTooltip(snapInfo.comment);
-								snap.setUserObject(new Object[]{snapInfo, conf});
-								node.addItem(snap);
-							}
-						}
-					});
-		}		
-	}
+
+    public void onOpen(OpenEvent<TreeItem> event) {
+        final TreeItem node = event.getTarget();
+        if ( ExplorerNodeConfig.PACKAGE_SNAPSHOTS.equals( itemWidgets.get( node ) ) ) {
+            return;
+        }
+        final PackageConfigData conf = (PackageConfigData) node.getUserObject();
+        if ( conf != null ) {
+            RepositoryServiceFactory.getService().listSnapshots( conf.name,
+                                                                 new GenericCallback<SnapshotInfo[]>() {
+                                                                     public void onSuccess(SnapshotInfo[] snaps) {
+                                                                         node.removeItems();
+                                                                         for ( final SnapshotInfo snapInfo : snaps ) {
+                                                                             TreeItem snap = new TreeItem( snapInfo.name );
+                                                                             //snap.setTooltip(snapInfo.comment);
+                                                                             snap.setUserObject( new Object[]{snapInfo, conf} );
+                                                                             node.addItem( snap );
+                                                                         }
+                                                                     }
+                                                                 } );
+        }
+    }
 }

Modified: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/explorer/ExplorerLayoutManager.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/explorer/ExplorerLayoutManager.java	2010-10-15 05:42:54 UTC (rev 35524)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/explorer/ExplorerLayoutManager.java	2010-10-15 06:26:59 UTC (rev 35525)
@@ -19,19 +19,12 @@
 import org.drools.guvnor.client.LoggedInUserInfo;
 import org.drools.guvnor.client.security.Capabilities;
 
+import com.google.gwt.dom.client.Style.Unit;
+import com.google.gwt.user.client.History;
 import com.google.gwt.user.client.ui.DockLayoutPanel;
-import com.google.gwt.user.client.ui.DockPanel;
-import com.google.gwt.user.client.ui.HTML;
 import com.google.gwt.user.client.ui.Panel;
-import com.google.gwt.user.client.ui.ScrollPanel;
 import com.google.gwt.user.client.ui.SplitLayoutPanel;
-import com.google.gwt.user.client.ui.StackLayoutPanel;
-import com.google.gwt.user.client.Command;
-import com.google.gwt.user.client.DeferredCommand;
-import com.google.gwt.user.client.History;
-import com.google.gwt.dom.client.Style.Unit;
 
-
 /**
  * This is the main part of the app that lays everything out. 
  */
@@ -39,167 +32,63 @@
     /**
      * These are used to decide what to display or not.
      */
-    protected static Capabilities capabilities;
+    protected static Capabilities         capabilities;
 
-    private DockPanel titlePanel;
-    private StackLayoutPanel navigationStackLayoutPanel;
-    private ExplorerViewCenterPanel centertabbedPanel;
-    private DockLayoutPanel mainPanel;
+    private TitlePanel                    titlePanel;
+    private NavigationPanel               navigationStackLayoutPanel;
+    private DockLayoutPanel               mainPanel;
 
+    private final ExplorerViewCenterPanel centertabbedPanel = new ExplorerViewCenterPanel();
 
-    public ExplorerLayoutManager(LoggedInUserInfo uif, Capabilities caps) {
-        Preferences.INSTANCE.loadPrefs(caps);
+    public ExplorerLayoutManager(LoggedInUserInfo uif,
+                                 Capabilities caps) {
+        Preferences.INSTANCE.loadPrefs( caps );
 
         String tok = History.getToken();
 
-
         //we use this to decide what to display.
-        BookmarkInfo bi = handleHistoryToken(tok);
+        BookmarkInfo bookmarkInfo = handleHistoryToken( tok );
         ExplorerLayoutManager.capabilities = caps;
-                
-        
-        if (bi.showChrome) {
-        	setupTitlePanel(uif);
+
+        if ( bookmarkInfo.isShowChrome() ) {
+            titlePanel = new TitlePanel( uif );
         }
-        setupExplorerViewCenterPanel();
-        setupNavigationPanels();      
-        setupMainPanel(bi);
 
-        
+        navigationStackLayoutPanel = new NavigationPanel( centertabbedPanel );
+        setupMainPanel( bookmarkInfo );
+
         //Open default widgets
-        if (bi.loadAsset) {
-            centertabbedPanel.openAsset(bi.assetId);
+        if ( bookmarkInfo.isLoadAsset() ) {
+            centertabbedPanel.openAsset( bookmarkInfo.getAssetId() );
         }
         centertabbedPanel.openFind();
     }
-    
+
     /**
-     * Create the title bar at the top of the application.
+     * Create the main panel.
      * 
-     * @param LoggedInUserInfo uif
      */
-    private void setupTitlePanel(LoggedInUserInfo uif) {  
-        titlePanel = new DockPanel();
-        titlePanel.setVerticalAlignment(DockPanel.ALIGN_MIDDLE);
-        titlePanel.add(new HTML("<div class='header'><img src='header_logo.gif' /></div>"), DockPanel.WEST);
-        titlePanel.add(uif, DockPanel.EAST);
-        titlePanel.setStyleName("header");
-        titlePanel.setWidth("100%");
-    }   
-    
-    /**
-     * Create the navigation panel for the west area.
-     * 
-     */
-    private void setupNavigationPanels() {  
-        navigationStackLayoutPanel = new StackLayoutPanel(Unit.EM);
+    private void setupMainPanel(BookmarkInfo bi) {
+        mainPanel = new DockLayoutPanel( Unit.EM );
 
-        //Browse
-        DockLayoutPanel browseDockLayoutPanel = new DockLayoutPanel(Unit.EM);
-        BrowseTree categoriesTreeItem = new BrowseTree(centertabbedPanel);
-        ScrollPanel categoriesTreeItemPanel = new ScrollPanel(categoriesTreeItem.getTree());
-        
-        if (ExplorerLayoutManager.shouldShow(Capabilities.SHOW_CREATE_NEW_ASSET)) {
-        	browseDockLayoutPanel.addNorth(RulesNewMenu.getMenu(categoriesTreeItem),2);
+        if ( bi.isShowChrome() ) {
+            mainPanel.addNorth( titlePanel,
+                                4 );
         }
-        browseDockLayoutPanel.add(categoriesTreeItemPanel);
-        
-        navigationStackLayoutPanel.add(browseDockLayoutPanel, categoriesTreeItem.getHeaderHTML(), 2);
-       
-      
-        //Knowledge Bases (Packages)
-        if (shouldShow(Capabilities.SHOW_PACKAGE_VIEW)) {
-        	DockLayoutPanel packageDockLayoutPanel = new DockLayoutPanel(Unit.EM);
-            final PackagesTree packagesTreeItem = new PackagesTree(centertabbedPanel);
-            ScrollPanel packagesTreeItemPanel = new ScrollPanel(packagesTreeItem.getTree());
-            
-            if (ExplorerLayoutManager.shouldShow(Capabilities.SHOW_CREATE_NEW_ASSET)) {
-            	packageDockLayoutPanel.addNorth(PackagesNewMenu.getMenu(packagesTreeItem),2);
-            }
-            packageDockLayoutPanel.add(packagesTreeItemPanel);
-            
-            navigationStackLayoutPanel.add(packageDockLayoutPanel, packagesTreeItem.getHeaderHTML(), 2);
-  
-            //lazy loaded to easy startup wait time.
-            DeferredCommand.addCommand(new Command() {
-                public void execute() {
-                	packagesTreeItem.loadPackageList();
-                }
-            });         
-        }
-
-        //QA
-        if (shouldShow(Capabilities.SHOW_QA)) {
-        	DockLayoutPanel qaDockLayoutPanel = new DockLayoutPanel(Unit.EM);
-        	QATree qaTreeItem = new QATree(centertabbedPanel);
-            ScrollPanel qaTreeItemPanel = new ScrollPanel(qaTreeItem.getTree());
-
-            qaDockLayoutPanel.add(qaTreeItemPanel);
-            
-            navigationStackLayoutPanel.add(qaDockLayoutPanel, qaTreeItem.getHeaderHTML(), 2);               	
-        }
-
-        //Deployment(Package snapshots)
-        if (shouldShow(Capabilities.SHOW_DEPLOYMENT, Capabilities.SHOW_DEPLOYMENT_NEW)) {
-        	DockLayoutPanel deploymentDockLayoutPanel = new DockLayoutPanel(Unit.EM);
-        	DeploymentTree deploymentTreeItem = new DeploymentTree(centertabbedPanel);
-            ScrollPanel deploymentTreeItemPanel = new ScrollPanel(deploymentTreeItem.getTree());
-            
-            if (ExplorerLayoutManager.shouldShow(Capabilities.SHOW_CREATE_NEW_ASSET)) {
-            	deploymentDockLayoutPanel.addNorth(DeploymentNewMenu.getMenu(deploymentTreeItem),2);
-            }
-            
-            deploymentDockLayoutPanel.add(deploymentTreeItemPanel);
-            
-            navigationStackLayoutPanel.add(deploymentDockLayoutPanel, deploymentTreeItem.getHeaderHTML(), 2);   
-        }
-
-        //Admin
-        if (shouldShow(Capabilities.SHOW_ADMIN)) {
-        	DockLayoutPanel adminDockLayoutPanel = new DockLayoutPanel(Unit.EM);
-        	AdministrationTree deploymentTreeItem = new AdministrationTree(centertabbedPanel);
-            ScrollPanel adminTreeItemPanel = new ScrollPanel(deploymentTreeItem.getTree());
-
-            adminDockLayoutPanel.add(adminTreeItemPanel);
-            
-            navigationStackLayoutPanel.add(adminDockLayoutPanel, deploymentTreeItem.getHeaderHTML(), 2);   
-        }
-
-        //accordion.add(new ProcessServerPanel("Process Server", centertabbedPanel));
-
+        SplitLayoutPanel centerPanel = new SplitLayoutPanel();
+        centerPanel.addWest( navigationStackLayoutPanel,
+                             250 );
+        centerPanel.add( centertabbedPanel );
+        mainPanel.add( centerPanel );
     }
 
-    /**
-     * Create the explorer view tabbed panel 
-     * 
-     */
-    private void setupExplorerViewCenterPanel() {  
-    	centertabbedPanel = new ExplorerViewCenterPanel();
-    }   
-   
-    /**
-     * Create the main panel.
-     * 
-     */
-    private void setupMainPanel(BookmarkInfo bi) {        
-        mainPanel = new DockLayoutPanel(Unit.EM);        
-        
-        if (bi.showChrome) {
-            mainPanel.addNorth(titlePanel, 4);
-        }        
-        SplitLayoutPanel centerPanel = new SplitLayoutPanel();        
-        centerPanel.addWest(navigationStackLayoutPanel, 250);
-        centerPanel.add(centertabbedPanel.getPanel());        
-        mainPanel.add(centerPanel);
-    }
-    
     public Panel getBaseLayout() {
         return mainPanel;
     }
 
     public static boolean shouldShow(Integer... capability) {
-        for (Integer cap : capability) {
-           if (capabilities.list.contains(cap)) {
+        for ( Integer cap : capability ) {
+            if ( capabilities.list.contains( cap ) ) {
                 return true;
             }
         }
@@ -211,30 +100,54 @@
      * to work out what we will display.
      */
     static BookmarkInfo handleHistoryToken(String tok) {
-        if (tok == null) return new BookmarkInfo();
-       BookmarkInfo bi = new BookmarkInfo();
-        if (tok.startsWith("asset=")) { //NON-NLS
-        	String uuid = null;
-        	//URLDecoder is not supported in GWT. We decode  ampersand (&) here by ourself. 
-        	if(tok.indexOf("%26nochrome") >= 0) {
-        		uuid = tok.substring(6).split("%26nochrome")[0]; //NON-NLS
-        	} else {
-                uuid = tok.substring(6).split("&nochrome")[0]; //NON-NLS
-        	}
-            bi.loadAsset = true;
-            bi.assetId = uuid;
+        if ( tok == null ) return new BookmarkInfo();
+        BookmarkInfo bi = new BookmarkInfo();
+        if ( tok.startsWith( "asset=" ) ) { //NON-NLS
+            String uuid = null;
+            //URLDecoder is not supported in GWT. We decode  ampersand (&) here by ourself. 
+            if ( tok.indexOf( "%26nochrome" ) >= 0 ) {
+                uuid = tok.substring( 6 ).split( "%26nochrome" )[0]; //NON-NLS
+            } else {
+                uuid = tok.substring( 6 ).split( "&nochrome" )[0]; //NON-NLS
+            }
+            bi.setLoadAsset( true );
+            bi.setAssetId( uuid );
         }
 
-        if (tok.contains("nochrome") || tok.contains("nochrome==true")) {
-            bi.showChrome = false;
+        if ( tok.contains( "nochrome" ) || tok.contains( "nochrome==true" ) ) {
+            bi.setShowChrome( false );
         }
 
-       return bi;
+        return bi;
     }
 
     public static class BookmarkInfo {
-        String assetId;
-        boolean showChrome = true;
-        boolean loadAsset = false;
+        private String  assetId;
+        private boolean showChrome = true;
+        private boolean loadAsset  = false;
+
+        void setShowChrome(boolean showChrome) {
+            this.showChrome = showChrome;
+        }
+
+        boolean isShowChrome() {
+            return showChrome;
+        }
+
+        void setLoadAsset(boolean loadAsset) {
+            this.loadAsset = loadAsset;
+        }
+
+        boolean isLoadAsset() {
+            return loadAsset;
+        }
+
+        void setAssetId(String assetId) {
+            this.assetId = assetId;
+        }
+
+        String getAssetId() {
+            return assetId;
+        }
     }
 }

Modified: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/explorer/ExplorerViewCenterPanel.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/explorer/ExplorerViewCenterPanel.java	2010-10-15 05:42:54 UTC (rev 35524)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/explorer/ExplorerViewCenterPanel.java	2010-10-15 06:26:59 UTC (rev 35525)
@@ -50,7 +50,7 @@
 import com.google.gwt.user.client.DOM;
 import com.google.gwt.user.client.History;
 import com.google.gwt.user.client.Timer;
-import com.google.gwt.user.client.ui.Button;
+import com.google.gwt.user.client.ui.Composite;
 import com.google.gwt.user.client.ui.HTML;
 import com.google.gwt.user.client.ui.HorizontalPanel;
 import com.google.gwt.user.client.ui.Label;
@@ -63,73 +63,29 @@
  * This is the tab panel manager.
  * @author Fernando Meyer, Michael Neale
  */
-public class ExplorerViewCenterPanel {
-    private Constants constants = ((Constants)GWT.create(Constants.class));
-    private static Images images = (Images)GWT.create(Images.class);       
+public class ExplorerViewCenterPanel extends Composite {
+    private Constants                  constants            = ((Constants) GWT.create( Constants.class ));
+    private static Images              images               = (Images) GWT.create( Images.class );
 
-    final TabLayoutPanel tp;
+    private final TabLayoutPanel       tabLayoutPanel;
 
-    private MultiKeyMap<Panel> openedTabs = new MultiKeyMap<Panel>();
-    private static int id = 0;
+    private MultiKeyMap<Panel>         openedTabs           = new MultiKeyMap<Panel>();
+    private static int                 id                   = 0;
 
     /** to keep track of what is dirty, filthy */
-    private Map<String, GuvnorEditor> openedAssetEditors = new HashMap<String, GuvnorEditor>();
+    private Map<String, GuvnorEditor>  openedAssetEditors   = new HashMap<String, GuvnorEditor>();
     private Map<String, PackageEditor> openedPackageEditors = new HashMap<String, PackageEditor>();
-    
-    private Map<Panel, String[]> itemWidgets = new HashMap<Panel, String[]>();
 
+    private Map<Panel, String[]>       itemWidgets          = new HashMap<Panel, String[]>();
+
     //private Button                      closeAllButton;
 
     public ExplorerViewCenterPanel() {
-        tp = new TabLayoutPanel(2, Unit.EM);
-
-        //TODO: Dirtyable does not work.  
-        //listener to try and stop people from forgetting to save...
-/*        tp.addListener( new TabPanelListenerAdapter() {
-            @Override
-            public boolean doBeforeRemove(Container self,
-                                          final Component component) {
-
-                if ( openedAssetEditors.containsKey( component.getId() ) ) {
-
-                    GuvnorEditor rv = openedAssetEditors.get( component.getId() );
-                    if ( rv.isDirty() ) {
-                        component.show();
-                        return Window.confirm( constants.AreYouSureCloseWarningUnsaved() );
-                    } else {
-                        return true;
-                    }
-                }
-                return true;
-            }
-        } );*/
-
-        addCloseAllButton();
+        tabLayoutPanel = new TabLayoutPanel( 2,
+                                             Unit.EM );
+        initWidget( tabLayoutPanel );
     }
 
-    //TODO:
-    private void addCloseAllButton() {
-/*        closeAllButton = new Button( constants.CloseAllItems() );
-        closeAllButton.addListener( new ButtonListenerAdapter() {
-            @Override
-            public void onClick(Button button,
-                                EventObject e) {
-                if ( Window.confirm( constants.AreYouSureYouWantToCloseOpenItems() ) ) {
-                    tp.clear();
-                    openedAssetEditors.clear();
-                    openedPackageEditors.clear();
-                    openedTabs.clear();
-                    openFind();
-                }
-            }
-        } );
-        tp.addButton( closeAllButton );*/
-    }
-
-    public TabLayoutPanel getPanel() {
-        return tp;
-    }
-
     /**
      * Add a new tab. Should only do this if have checked showIfOpen to avoid dupes being opened.
      * @param tabname The displayed tab name.
@@ -139,9 +95,9 @@
     public void addTab(final String tabname,
                        Widget widget,
                        final String key) {
-        addTab(tabname,
-               widget,
-               new String[]{key});
+        addTab( tabname,
+                widget,
+                new String[]{key} );
     }
 
     /**
@@ -153,152 +109,165 @@
     public void addTab(final String tabname,
                        Widget widget,
                        final String[] keys) {
-        final String panelId = (keys.length == 1 ? keys[0] + id++ : Arrays.toString(keys) + id++);
-        
+        final String panelId = (keys.length == 1 ? keys[0] + id++ : Arrays.toString( keys ) + id++);
+
         ScrollPanel localTP = new ScrollPanel();
-        localTP.add(widget);
-        tp.add(localTP, newClosableLabel(localTP, tabname));
-        tp.selectTab(localTP);
+        localTP.add( widget );
+        tabLayoutPanel.add( localTP,
+                            newClosableLabel( localTP,
+                                              tabname ) );
+        tabLayoutPanel.selectTab( localTP );
 
         //TODO: Dirtyable
-/*        localTP.ad( new PanelListenerAdapter() {
-            public void onDestroy(Component component) {
-                Panel p = openedTabs.remove( keys );
-                if ( p != null ) {
-                    p.destroy();
+        /*        localTP.ad( new PanelListenerAdapter() {
+                    public void onDestroy(Component component) {
+                        Panel p = openedTabs.remove( keys );
+                        if ( p != null ) {
+                            p.destroy();
+                        }
+                        openedAssetEditors.remove( panelId );
+                        openedPackageEditors.remove( tabname );
+                    }
+                } );
+        */
+        if ( widget instanceof GuvnorEditor ) {
+            this.openedAssetEditors.put( panelId,
+                                         (GuvnorEditor) widget );
+        } else if ( widget instanceof PackageEditor ) {
+            this.openedPackageEditors.put( tabname,
+                                           (PackageEditor) widget );
+        }
+
+        openedTabs.put( keys,
+                        localTP );
+        itemWidgets.put( localTP,
+                         keys );
+    }
+
+    private Widget newClosableLabel(final Panel panel,
+                                    final String title) {
+        final HorizontalPanel hPanel = new HorizontalPanel();
+        final Label label = new Label( title );
+        DOM.setStyleAttribute( label.getElement(),
+                               "whiteSpace",
+                               "nowrap" );
+        ImageButton closeBtn = new ImageButton( images.close().getURL() );
+        //Button closeBtn = new Button("x");
+        closeBtn.addClickHandler( new ClickHandler() {
+            public void onClick(ClickEvent arg0) {
+                int widgetIndex = tabLayoutPanel.getWidgetIndex( panel );
+                if ( widgetIndex == tabLayoutPanel.getSelectedIndex() ) {
+                    tabLayoutPanel.selectTab( widgetIndex - 1 );
                 }
-                openedAssetEditors.remove( panelId );
-                openedPackageEditors.remove( tabname );
+                tabLayoutPanel.remove( widgetIndex );
+                String[] keys = itemWidgets.remove( panel );
+                openedTabs.remove( keys );
             }
         } );
-*/
-        if (widget instanceof GuvnorEditor) {
-            this.openedAssetEditors.put(panelId, (GuvnorEditor)widget);
-        } else if (widget instanceof PackageEditor) {
-            this.openedPackageEditors.put( tabname,(PackageEditor)widget);
-        }
 
-        openedTabs.put(keys, localTP);
-        itemWidgets.put(localTP, keys);
+        hPanel.add( label );
+        hPanel.add( new HTML( "&nbsp&nbsp&nbsp" ) );
+        hPanel.add( closeBtn );
+        return hPanel;
     }
-    
-	private Widget newClosableLabel(final Panel panel, final String title) {
-		final HorizontalPanel hPanel = new HorizontalPanel();
-		final Label label = new Label(title);
-		DOM.setStyleAttribute(label.getElement(), "whiteSpace", "nowrap");
-		ImageButton closeBtn = new ImageButton(images.close().getURL());
-		//Button closeBtn = new Button("x");
-		closeBtn.addClickHandler(new ClickHandler() {
-			public void onClick(ClickEvent arg0) {
-				int widgetIndex = tp.getWidgetIndex(panel);
-				if (widgetIndex == tp.getSelectedIndex()) {
-					tp.selectTab(widgetIndex - 1);
-				}
-				tp.remove(widgetIndex);
-				String[] keys = itemWidgets.remove(panel);
-				openedTabs.remove(keys);				
-			}			
-		});
 
-		hPanel.add(label);
-		hPanel.add(new HTML("&nbsp&nbsp&nbsp"));
-		hPanel.add(closeBtn);
-		return hPanel;
-	}
-    
     /**
      * Will open if existing. If not it will return false;
      */
     public boolean showIfOpen(String key) {
-        if (openedTabs.containsKey(key)) {
+        if ( openedTabs.containsKey( key ) ) {
             LoadingPopup.close();
-            Panel tpi = (Panel)openedTabs.get(key);
-            tp.selectTab(tpi);      
+            Panel tpi = (Panel) openedTabs.get( key );
+            tabLayoutPanel.selectTab( tpi );
             return true;
-        } 
+        }
         return false;
     }
 
     public void close(String key) {
-        //tp.remove( key + id );
-        Panel tpi = openedTabs.remove(key);
-        
-        int widgetIndex = tp.getWidgetIndex(tpi);
-        if (widgetIndex == tp.getSelectedIndex()) {
-            tp.selectTab(widgetIndex - 1);
+        Panel tpi = openedTabs.remove( key );
+
+        int widgetIndex = tabLayoutPanel.getWidgetIndex( tpi );
+        if ( widgetIndex == tabLayoutPanel.getSelectedIndex() ) {
+            tabLayoutPanel.selectTab( widgetIndex - 1 );
         }
-        
-        tp.remove(widgetIndex);
-		itemWidgets.remove(tpi);
+
+        tabLayoutPanel.remove( widgetIndex );
+        itemWidgets.remove( tpi );
     }
 
     /**
      * Open an asset if it is not already open.
      */
-	public void openAsset(final String uuid) {
-		if (uuid.contains("<")) {
-			return;
-		}
-		History.newItem("asset=" + uuid); // NON-NLS
+    public void openAsset(final String uuid) {
+        if ( uuid.contains( "<" ) ) {
+            return;
+        }
+        History.newItem( "asset=" + uuid ); // NON-NLS
 
-		if (!showIfOpen(uuid)) {
+        if ( !showIfOpen( uuid ) ) {
 
-			final boolean[] loading = {true};
+            final boolean[] loading = {true};
 
-			Timer t = new Timer() {
-				public void run() {
-					if (loading[0]) {
-						LoadingPopup.showMessage(constants.LoadingAsset());
-					}
-				}
-			};
-			t.schedule(200);
+            Timer t = new Timer() {
+                public void run() {
+                    if ( loading[0] ) {
+                        LoadingPopup.showMessage( constants.LoadingAsset() );
+                    }
+                }
+            };
+            t.schedule( 200 );
 
-			RepositoryServiceFactory.getService().loadRuleAsset(uuid, new GenericCallback<RuleAsset>() {
-				public void onSuccess(final RuleAsset a) {
-					SuggestionCompletionCache.getInstance().doAction(a.metaData.packageName, new Command() {
-						public void execute() {
-							loading[0] = false;
-							EditItemEvent edit = new EditItemEvent() {
-								public void open(String key) {
-									openAsset(key);
-								}
+            RepositoryServiceFactory.getService().loadRuleAsset( uuid,
+                                                                 new GenericCallback<RuleAsset>() {
+                                                                     public void onSuccess(final RuleAsset a) {
+                                                                         SuggestionCompletionCache.getInstance().doAction( a.metaData.packageName,
+                                                                                                                           new Command() {
+                                                                                                                               public void execute() {
+                                                                                                                                   loading[0] = false;
+                                                                                                                                   EditItemEvent edit = new EditItemEvent() {
+                                                                                                                                       public void open(String key) {
+                                                                                                                                           openAsset( key );
+                                                                                                                                       }
 
-								public void open(MultiViewRow[] rows) {
-									for (MultiViewRow row : rows) {
-										openAsset(row.uuid);
-									}
-								}
-							};
-							RuleViewer rv = new RuleViewer(a, edit);
-							addTab(a.metaData.name, rv, uuid);
-							rv.setCloseCommand(new Command() {
-								public void execute() {
-									close(uuid);
-								}
-							});
+                                                                                                                                       public void open(MultiViewRow[] rows) {
+                                                                                                                                           for ( MultiViewRow row : rows ) {
+                                                                                                                                               openAsset( row.uuid );
+                                                                                                                                           }
+                                                                                                                                       }
+                                                                                                                                   };
+                                                                                                                                   RuleViewer rv = new RuleViewer( a,
+                                                                                                                                                                   edit );
+                                                                                                                                   addTab( a.metaData.name,
+                                                                                                                                           rv,
+                                                                                                                                           uuid );
+                                                                                                                                   rv.setCloseCommand( new Command() {
+                                                                                                                                       public void execute() {
+                                                                                                                                           close( uuid );
+                                                                                                                                       }
+                                                                                                                                   } );
 
-							// When model is saved update the package view if it is opened.
-							if (a.metaData.format.equals(AssetFormats.MODEL)) {
-							    Command command =new Command() {
-                                    public void execute() {
-                                        PackageEditor packageEditor = openedPackageEditors.get(a.metaData.packageName);
-                                        if (packageEditor != null) {
-                                            packageEditor.reload();
-                                        }
-                                    }
-                                };
-								rv.setCheckedInCommand(command);
-								rv.setArchiveCommand(command);
-							}
+                                                                                                                                   // When model is saved update the package view if it is opened.
+                                                                                                                                   if ( a.metaData.format.equals( AssetFormats.MODEL ) ) {
+                                                                                                                                       Command command = new Command() {
+                                                                                                                                           public void execute() {
+                                                                                                                                               PackageEditor packageEditor = openedPackageEditors.get( a.metaData.packageName );
+                                                                                                                                               if ( packageEditor != null ) {
+                                                                                                                                                   packageEditor.reload();
+                                                                                                                                               }
+                                                                                                                                           }
+                                                                                                                                       };
+                                                                                                                                       rv.setCheckedInCommand( command );
+                                                                                                                                       rv.setArchiveCommand( command );
+                                                                                                                                   }
 
-							LoadingPopup.close();
-						}
-					});
-				}
-			});
-		}
-	}
+                                                                                                                                   LoadingPopup.close();
+                                                                                                                               }
+                                                                                                                           } );
+                                                                     }
+                                                                 } );
+        }
+    }
 
     public void openAssets(MultiViewRow[] rows) {
 
@@ -306,9 +275,9 @@
         final String[] uuids = new String[rows.length];
         final String[] names = new String[rows.length];
 
-        for (int i = 0; i < rows.length; i++) {
+        for ( int i = 0; i < rows.length; i++ ) {
             // Check if any of these assets are already opened.
-            if (showIfOpen(rows[i].uuid)) {
+            if ( showIfOpen( rows[i].uuid ) ) {
                 blockingAssetName = rows[i].name;
                 break;
             }
@@ -316,69 +285,76 @@
             names[i] = rows[i].name;
         }
 
-        if (blockingAssetName != null) {
-            FormStylePopup popup = new FormStylePopup("images/information.gif", //NON-NLS
-                                                      Format.format( constants.Asset0IsAlreadyOpenPleaseCloseItBeforeOpeningMultiview(),
-                                                                      blockingAssetName));
+        if ( blockingAssetName != null ) {
+            FormStylePopup popup = new FormStylePopup( "images/information.gif", //NON-NLS
+                                                       Format.format( constants.Asset0IsAlreadyOpenPleaseCloseItBeforeOpeningMultiview(),
+                                                                      blockingAssetName ) );
             popup.show();
             return;
         }
 
-        MultiViewEditor multiview = new MultiViewEditor(rows,
-                                                        new EditItemEvent() {
-                                                            public void open(String key) {
-                                                                openAsset(key);
-                                                            }
+        MultiViewEditor multiview = new MultiViewEditor( rows,
+                                                         new EditItemEvent() {
+                                                             public void open(String key) {
+                                                                 openAsset( key );
+                                                             }
 
                                                              public void open(MultiViewRow[] rows) {
-                                                                 for (MultiViewRow row : rows) {
-                                                                     openAsset(row.uuid);
+                                                                 for ( MultiViewRow row : rows ) {
+                                                                     openAsset( row.uuid );
                                                                  }
                                                              }
                                                          } );
 
-        multiview.setCloseCommand(new Command() {
+        multiview.setCloseCommand( new Command() {
             public void execute() {
-                close(Arrays.toString(uuids));
+                close( Arrays.toString( uuids ) );
             }
-        });
+        } );
 
-        addTab(Arrays.toString(names),
-               multiview,
-               uuids );
+        addTab( Arrays.toString( names ),
+                multiview,
+                uuids );
 
     }
 
     /**
      * Open a package editor if it is not already open.
      */
-	public void openPackageEditor(final String uuid, final Command refPackageList) {
+    public void openPackageEditor(final String uuid,
+                                  final Command refPackageList) {
 
-		if (!showIfOpen(uuid)) {
-			LoadingPopup.showMessage(constants.LoadingPackageInformation());
-			RepositoryServiceFactory.getService().loadPackageConfig(uuid, new GenericCallback<PackageConfigData>() {
-				public void onSuccess(PackageConfigData conf) {
-					PackageEditor ed = new PackageEditor(conf, new Command() {
-						public void execute() {
-							close(uuid);
-						}
-					}, refPackageList, new EditItemEvent() {
-						public void open(String uuid) {
-							openAsset(uuid);
-						}
+        if ( !showIfOpen( uuid ) ) {
+            LoadingPopup.showMessage( constants.LoadingPackageInformation() );
+            RepositoryServiceFactory.getService().loadPackageConfig( uuid,
+                                                                     new GenericCallback<PackageConfigData>() {
+                                                                         public void onSuccess(PackageConfigData conf) {
+                                                                             PackageEditor ed = new PackageEditor( conf,
+                                                                                                                   new Command() {
+                                                                                                                       public void execute() {
+                                                                                                                           close( uuid );
+                                                                                                                       }
+                                                                                                                   },
+                                                                                                                   refPackageList,
+                                                                                                                   new EditItemEvent() {
+                                                                                                                       public void open(String uuid) {
+                                                                                                                           openAsset( uuid );
+                                                                                                                       }
 
-						public void open(MultiViewRow[] rows) {
-							for (MultiViewRow row : rows) {
-								openAsset(row.uuid);
-							}
-						}
-					});
-					addTab(conf.name, ed, conf.uuid);
-					LoadingPopup.close();
-				}
-			});
-		}
-	}
+                                                                                                                       public void open(MultiViewRow[] rows) {
+                                                                                                                           for ( MultiViewRow row : rows ) {
+                                                                                                                               openAsset( row.uuid );
+                                                                                                                           }
+                                                                                                                       }
+                                                                                                                   } );
+                                                                             addTab( conf.name,
+                                                                                     ed,
+                                                                                     conf.uuid );
+                                                                             LoadingPopup.close();
+                                                                         }
+                                                                     } );
+        }
+    }
 
     public void openFind() {
         if ( !showIfOpen( "FIND" ) ) { //NON-NLS
@@ -399,27 +375,30 @@
         }
     }
 
-	public void openSnapshot(final SnapshotInfo snap) {
-		// make this refresh the 'snap'
+    public void openSnapshot(final SnapshotInfo snap) {
+        // make this refresh the 'snap'
 
-		if (!showIfOpen(snap.name + snap.uuid)) {
-			LoadingPopup.showMessage(constants.LoadingSnapshot());
-			RepositoryServiceFactory.getService().loadPackageConfig(snap.uuid,
-					new GenericCallback<PackageConfigData>() {
-						public void onSuccess(PackageConfigData conf) {
-							addTab(Format.format(constants.SnapshotLabel(),
-									snap.name), new SnapshotView(snap, conf,
-									new Command() {
-										public void execute() {
-											close(snap.name + snap.uuid);
-										}
-									}, ExplorerViewCenterPanel.this), snap.name
-									+ snap.uuid);
-							LoadingPopup.close();
-						}
-					});
+        if ( !showIfOpen( snap.name + snap.uuid ) ) {
+            LoadingPopup.showMessage( constants.LoadingSnapshot() );
+            RepositoryServiceFactory.getService().loadPackageConfig( snap.uuid,
+                                                                     new GenericCallback<PackageConfigData>() {
+                                                                         public void onSuccess(PackageConfigData conf) {
+                                                                             addTab( Format.format( constants.SnapshotLabel(),
+                                                                                                    snap.name ),
+                                                                                     new SnapshotView( snap,
+                                                                                                       conf,
+                                                                                                       new Command() {
+                                                                                                           public void execute() {
+                                                                                                               close( snap.name + snap.uuid );
+                                                                                                           }
+                                                                                                       },
+                                                                                                       ExplorerViewCenterPanel.this ),
+                                                                                     snap.name + snap.uuid );
+                                                                             LoadingPopup.close();
+                                                                         }
+                                                                     } );
 
-		}
-	}
+        }
+    }
 
 }

Modified: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/explorer/MultiKeyMap.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/explorer/MultiKeyMap.java	2010-10-15 05:42:54 UTC (rev 35524)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/explorer/MultiKeyMap.java	2010-10-15 06:26:59 UTC (rev 35525)
@@ -1,4 +1,4 @@
-/**
+/*
  * Copyright 2010 JBoss Inc
  *
  * Licensed under the Apache License, Version 2.0 (the "License");

Added: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/explorer/NavigationPanel.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/explorer/NavigationPanel.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/explorer/NavigationPanel.java	2010-10-15 06:26:59 UTC (rev 35525)
@@ -0,0 +1,142 @@
+/*
+ * Copyright 2010 JBoss Inc
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.drools.guvnor.client.explorer;
+
+import org.drools.guvnor.client.security.Capabilities;
+
+import com.google.gwt.dom.client.Style.Unit;
+import com.google.gwt.user.client.Command;
+import com.google.gwt.user.client.DeferredCommand;
+import com.google.gwt.user.client.ui.DockLayoutPanel;
+import com.google.gwt.user.client.ui.ScrollPanel;
+import com.google.gwt.user.client.ui.StackLayoutPanel;
+
+/**
+ * Navigation panel for the west area.
+ * 
+ * @author rikkola
+ *
+ */
+public class NavigationPanel extends StackLayoutPanel {
+
+    private final ExplorerViewCenterPanel centertabbedPanel;
+
+    public NavigationPanel(ExplorerViewCenterPanel centertabbedPanel) {
+        super( Unit.EM );
+        this.centertabbedPanel = centertabbedPanel;
+
+        addCategoriesPanel();
+
+        if ( ExplorerLayoutManager.shouldShow( Capabilities.SHOW_PACKAGE_VIEW ) ) {
+            addPackagesPanel();
+        }
+
+        if ( ExplorerLayoutManager.shouldShow( Capabilities.SHOW_QA ) ) {
+            addQAPanel();
+        }
+
+        if ( ExplorerLayoutManager.shouldShow( Capabilities.SHOW_DEPLOYMENT,
+                                               Capabilities.SHOW_DEPLOYMENT_NEW ) ) {
+            addDeploymentPanel();
+        }
+
+        if ( ExplorerLayoutManager.shouldShow( Capabilities.SHOW_ADMIN ) ) {
+            addAdminPanel();
+        }
+
+    }
+
+    private void addAdminPanel() {
+        DockLayoutPanel adminDockLayoutPanel = new DockLayoutPanel( Unit.EM );
+        AdministrationTree deploymentTreeItem = new AdministrationTree( centertabbedPanel );
+        ScrollPanel adminTreeItemPanel = new ScrollPanel( deploymentTreeItem );
+
+        adminDockLayoutPanel.add( adminTreeItemPanel );
+
+        add( adminDockLayoutPanel,
+             deploymentTreeItem.getHeaderHTML(),
+             2 );
+    }
+
+    private void addDeploymentPanel() {
+        DockLayoutPanel deploymentDockLayoutPanel = new DockLayoutPanel( Unit.EM );
+        DeploymentTree deploymentTreeItem = new DeploymentTree( centertabbedPanel );
+        ScrollPanel deploymentTreeItemPanel = new ScrollPanel( deploymentTreeItem );
+
+        if ( ExplorerLayoutManager.shouldShow( Capabilities.SHOW_CREATE_NEW_ASSET ) ) {
+            deploymentDockLayoutPanel.addNorth( DeploymentNewMenu.getMenu( deploymentTreeItem ),
+                                                2 );
+        }
+
+        deploymentDockLayoutPanel.add( deploymentTreeItemPanel );
+
+        add( deploymentDockLayoutPanel,
+             deploymentTreeItem.getHeaderHTML(),
+             2 );
+    }
+
+    private void addQAPanel() {
+        DockLayoutPanel qaDockLayoutPanel = new DockLayoutPanel( Unit.EM );
+        QATree qaTreeItem = new QATree( centertabbedPanel );
+        ScrollPanel qaTreeItemPanel = new ScrollPanel( qaTreeItem );
+
+        qaDockLayoutPanel.add( qaTreeItemPanel );
+
+        add( qaDockLayoutPanel,
+             qaTreeItem.getHeaderHTML(),
+             2 );
+    }
+
+    private void addPackagesPanel() {
+        DockLayoutPanel packageDockLayoutPanel = new DockLayoutPanel( Unit.EM );
+        final PackagesTree packagesTreeItem = new PackagesTree( centertabbedPanel );
+        ScrollPanel packagesTreeItemPanel = new ScrollPanel( packagesTreeItem );
+
+        if ( ExplorerLayoutManager.shouldShow( Capabilities.SHOW_CREATE_NEW_ASSET ) ) {
+            packageDockLayoutPanel.addNorth( PackagesNewMenu.getMenu( packagesTreeItem ),
+                                             2 );
+        }
+        packageDockLayoutPanel.add( packagesTreeItemPanel );
+
+        add( packageDockLayoutPanel,
+             packagesTreeItem.getHeaderHTML(),
+             2 );
+
+        //lazy loaded to easy startup wait time.
+        DeferredCommand.addCommand( new Command() {
+            public void execute() {
+                packagesTreeItem.loadPackageList();
+            }
+        } );
+    }
+
+    private void addCategoriesPanel() {
+        DockLayoutPanel browseDockLayoutPanel = new DockLayoutPanel( Unit.EM );
+        BrowseTree categoriesTreeItem = new BrowseTree( centertabbedPanel );
+        ScrollPanel categoriesTreeItemPanel = new ScrollPanel( categoriesTreeItem );
+
+        if ( ExplorerLayoutManager.shouldShow( Capabilities.SHOW_CREATE_NEW_ASSET ) ) {
+            browseDockLayoutPanel.addNorth( RulesNewMenu.getMenu( categoriesTreeItem ),
+                                            2 );
+        }
+        browseDockLayoutPanel.add( categoriesTreeItemPanel );
+
+        add( browseDockLayoutPanel,
+             categoriesTreeItem.getHeaderHTML(),
+             2 );
+    }
+
+}

Modified: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/explorer/PackagesTree.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/explorer/PackagesTree.java	2010-10-15 05:42:54 UTC (rev 35524)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/explorer/PackagesTree.java	2010-10-15 06:26:59 UTC (rev 35525)
@@ -42,19 +42,16 @@
 import com.google.gwt.user.client.ui.TreeItem;
 
 public class PackagesTree extends AbstractTree {
-    private static Constants      constants      = GWT.create( Constants.class );
-    private static Images         images         = (Images) GWT.create( Images.class );
+    private static Constants constants      = GWT.create( Constants.class );
+    private static Images    images         = (Images) GWT.create( Images.class );
 
-    private Map<TreeItem, String> itemWidgets    = new HashMap<TreeItem, String>();
+    private boolean          packagesLoaded = false;
 
-    private boolean               packagesLoaded = false;
-
     public PackagesTree(ExplorerViewCenterPanel tabbedPanel) {
         super( tabbedPanel );
         this.name = constants.KnowledgeBases();
         this.image = images.packages();
 
-        mainTree = new Tree();
         mainTree.setAnimationEnabled( true );
         //lazy loaded to easy startup wait time.
         //setupPackagesTree(this.centertabbedPanel);
@@ -71,6 +68,11 @@
                 */
     }
 
+    @Override
+    Tree getTree() {
+        return new Tree();
+    }
+
     public void loadPackageList() {
         if ( !packagesLoaded ) {
             setupPackagesTree( this.centertabbedPanel );

Modified: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/explorer/QATree.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/explorer/QATree.java	2010-10-15 05:42:54 UTC (rev 35524)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/explorer/QATree.java	2010-10-15 06:26:59 UTC (rev 35525)
@@ -20,13 +20,13 @@
 import java.util.Iterator;
 import java.util.Map;
 
+import com.google.gwt.user.client.ui.Tree;
 import com.google.gwt.user.client.ui.TreeItem;
 import com.google.gwt.core.client.GWT;
 import com.google.gwt.event.logical.shared.OpenEvent;
 import com.google.gwt.event.logical.shared.OpenHandler;
 import com.google.gwt.event.logical.shared.SelectionEvent;
 
-
 import org.drools.guvnor.client.common.GenericCallback;
 import org.drools.guvnor.client.common.Util;
 import org.drools.guvnor.client.images.Images;
@@ -39,134 +39,143 @@
 import org.drools.guvnor.client.rulelist.EditItemEvent;
 import org.drools.guvnor.client.util.Format;
 
-public class QATree extends AbstractTree implements OpenHandler<TreeItem> {
-    private static Constants constants = GWT.create(Constants.class);
-    private static Images images = (Images) GWT.create(Images.class);       
+public class QATree extends AbstractTree
+    implements
+    OpenHandler<TreeItem> {
+    private static Constants constants = GWT.create( Constants.class );
+    private static Images    images    = (Images) GWT.create( Images.class );
 
-    private Map<TreeItem, String> itemWidgets = new HashMap<TreeItem, String>();
-
     public QATree(ExplorerViewCenterPanel tabbedPanel) {
-        super(tabbedPanel);
+        super( tabbedPanel );
         this.name = constants.QA1();
         this.image = images.analyze();
-        
-        mainTree = ExplorerNodeConfig.getQAStructure(itemWidgets);
 
         //Add Selection listener
-        mainTree.addSelectionHandler(this);
-        mainTree.addOpenHandler((OpenHandler<TreeItem>)this);       
+        mainTree.addSelectionHandler( this );
+        mainTree.addOpenHandler( (OpenHandler<TreeItem>) this );
     }
-    
+
+    @Override
+    Tree getTree() {
+        return ExplorerNodeConfig.getQAStructure( itemWidgets );
+    }
+
     public void onSelection(SelectionEvent<TreeItem> event) {
         TreeItem item = event.getSelectedItem();
-        
-        if (item.getUserObject() instanceof PackageConfigData) {            
-			PackageConfigData pc = (PackageConfigData) item.getUserObject();
-			String id = itemWidgets.get(item);
-			
-			if (ExplorerNodeConfig.TEST_SCENARIOS_ID.equals(id)) {
-				if (!centertabbedPanel.showIfOpen("scenarios" + pc.uuid)) { 
-					final EditItemEvent edit = new EditItemEvent() {
-						public void open(String key) {
-							centertabbedPanel.openAsset(key);
-						}
 
-						public void open(MultiViewRow[] rows) {
-							for (MultiViewRow row : rows) {
-								centertabbedPanel.openAsset(row.uuid);
-							}
-						}
-					};
+        if ( item.getUserObject() instanceof PackageConfigData ) {
+            PackageConfigData pc = (PackageConfigData) item.getUserObject();
+            String id = itemWidgets.get( item );
 
-					String m = Format.format(constants.ScenariosForPackage(),
-							pc.name);
-					centertabbedPanel.addTab(m, new ScenarioPackageView(
-							pc.uuid, pc.name, edit, centertabbedPanel),
-							"scenarios" + pc.uuid);
-				}
-			} else if (ExplorerNodeConfig.ANALYSIS_ID.equals(id)) {
-                if (!centertabbedPanel.showIfOpen("analysis" + pc.uuid)) { //NON-NLS
+            if ( ExplorerNodeConfig.TEST_SCENARIOS_ID.equals( id ) ) {
+                if ( !centertabbedPanel.showIfOpen( "scenarios" + pc.uuid ) ) {
                     final EditItemEvent edit = new EditItemEvent() {
                         public void open(String key) {
-                        	centertabbedPanel.openAsset(key);
+                            centertabbedPanel.openAsset( key );
                         }
 
                         public void open(MultiViewRow[] rows) {
-                            for (MultiViewRow row : rows) {
-                            	centertabbedPanel.openAsset(row.uuid);
+                            for ( MultiViewRow row : rows ) {
+                                centertabbedPanel.openAsset( row.uuid );
                             }
                         }
                     };
-                    
-                    String m = Format.format(constants.AnalysisForPackage(),
-                                              pc.name);
-                    centertabbedPanel.addTab(m,
-                                        new AnalysisView(pc.uuid,
-                                        		         pc.name,
-                                        		         edit),
-                                            "analysis" + pc.uuid); 
+
+                    String m = Format.format( constants.ScenariosForPackage(),
+                                              pc.name );
+                    centertabbedPanel.addTab( m,
+                                              new ScenarioPackageView( pc.uuid,
+                                                                       pc.name,
+                                                                       edit,
+                                                                       centertabbedPanel ),
+                                              "scenarios" + pc.uuid );
                 }
-			}
+            } else if ( ExplorerNodeConfig.ANALYSIS_ID.equals( id ) ) {
+                if ( !centertabbedPanel.showIfOpen( "analysis" + pc.uuid ) ) { //NON-NLS
+                    final EditItemEvent edit = new EditItemEvent() {
+                        public void open(String key) {
+                            centertabbedPanel.openAsset( key );
+                        }
+
+                        public void open(MultiViewRow[] rows) {
+                            for ( MultiViewRow row : rows ) {
+                                centertabbedPanel.openAsset( row.uuid );
+                            }
+                        }
+                    };
+
+                    String m = Format.format( constants.AnalysisForPackage(),
+                                              pc.name );
+                    centertabbedPanel.addTab( m,
+                                              new AnalysisView( pc.uuid,
+                                                                pc.name,
+                                                                edit ),
+                                              "analysis" + pc.uuid );
+                }
+            }
         }
-    }  
-    
-	public void onOpen(OpenEvent<TreeItem> event) {
-		final TreeItem node = event.getTarget();
-		if (ExplorerNodeConfig.TEST_SCENARIOS_ROOT_ID.equals(itemWidgets.get(node))) { 
+    }
+
+    public void onOpen(OpenEvent<TreeItem> event) {
+        final TreeItem node = event.getTarget();
+        if ( ExplorerNodeConfig.TEST_SCENARIOS_ROOT_ID.equals( itemWidgets.get( node ) ) ) {
             RepositoryServiceFactory.getService().listPackages( new GenericCallback<PackageConfigData[]>() {
                 public void onSuccess(PackageConfigData[] conf) {
                     node.removeItems();
-                    removeTestScenarioIDs(itemWidgets);
+                    removeTestScenarioIDs( itemWidgets );
 
                     for ( int i = 0; i < conf.length; i++ ) {
                         final PackageConfigData c = conf[i];
-                        TreeItem pkg = new TreeItem(Util.getHeader(images.packages(), c.name));
+                        TreeItem pkg = new TreeItem( Util.getHeader( images.packages(),
+                                                                     c.name ) );
 
-                        node.addItem(pkg);
-                        pkg.setUserObject(c);	
-                        itemWidgets.put(pkg, ExplorerNodeConfig.TEST_SCENARIOS_ID);
+                        node.addItem( pkg );
+                        pkg.setUserObject( c );
+                        itemWidgets.put( pkg,
+                                         ExplorerNodeConfig.TEST_SCENARIOS_ID );
                     }
                     //scenarios.removeItem(scenarios.getChild(0));
                 }
             } );
-		} else if (ExplorerNodeConfig.ANALYSIS_ROOT_ID.equals(itemWidgets.get(node))) { 
-	           RepositoryServiceFactory.getService().listPackages( new GenericCallback<PackageConfigData[]>() {
-	                public void onSuccess(PackageConfigData[] conf) {
-	                    node.removeItems();
-	                    removeAnalysisIDs(itemWidgets);
-	                    for ( int i = 0; i < conf.length; i++ ) {
-	                        final PackageConfigData c = conf[i];
-                           TreeItem pkg = new TreeItem(Util.getHeader(images.packages(), c.name));
+        } else if ( ExplorerNodeConfig.ANALYSIS_ROOT_ID.equals( itemWidgets.get( node ) ) ) {
+            RepositoryServiceFactory.getService().listPackages( new GenericCallback<PackageConfigData[]>() {
+                public void onSuccess(PackageConfigData[] conf) {
+                    node.removeItems();
+                    removeAnalysisIDs( itemWidgets );
+                    for ( int i = 0; i < conf.length; i++ ) {
+                        final PackageConfigData c = conf[i];
+                        TreeItem pkg = new TreeItem( Util.getHeader( images.packages(),
+                                                                     c.name ) );
 
-                           node.addItem(pkg);
-                           pkg.setUserObject(c);	
-                           itemWidgets.put(pkg, ExplorerNodeConfig.ANALYSIS_ID);
-	                    }
-	                }
-	            } );
-		}		
-	}
-	
-	private void removeTestScenarioIDs(Map<TreeItem, String> itemWidgets) {
-		Iterator<TreeItem> it = itemWidgets.keySet().iterator();		
-		while(it.hasNext()) {
-			TreeItem item = (TreeItem)it.next();
-		    String id = itemWidgets.get(item);
-			if(ExplorerNodeConfig.TEST_SCENARIOS_ID.equals(id)) {
-				it.remove();
-			}			
-		}
-	}
-	
-	
-	private void removeAnalysisIDs(Map<TreeItem, String> itemWidgets) {
-		Iterator<TreeItem> it = itemWidgets.keySet().iterator();		
-		while(it.hasNext()) {
-			TreeItem item = (TreeItem)it.next();
-		    String id = itemWidgets.get(item);
-			if(ExplorerNodeConfig.ANALYSIS_ID.equals(id)) {
-				it.remove();
-			}			
-		}
-	}
+                        node.addItem( pkg );
+                        pkg.setUserObject( c );
+                        itemWidgets.put( pkg,
+                                         ExplorerNodeConfig.ANALYSIS_ID );
+                    }
+                }
+            } );
+        }
+    }
+
+    private void removeTestScenarioIDs(Map<TreeItem, String> itemWidgets) {
+        Iterator<TreeItem> it = itemWidgets.keySet().iterator();
+        while ( it.hasNext() ) {
+            TreeItem item = (TreeItem) it.next();
+            String id = itemWidgets.get( item );
+            if ( ExplorerNodeConfig.TEST_SCENARIOS_ID.equals( id ) ) {
+                it.remove();
+            }
+        }
+    }
+
+    private void removeAnalysisIDs(Map<TreeItem, String> itemWidgets) {
+        Iterator<TreeItem> it = itemWidgets.keySet().iterator();
+        while ( it.hasNext() ) {
+            TreeItem item = (TreeItem) it.next();
+            String id = itemWidgets.get( item );
+            if ( ExplorerNodeConfig.ANALYSIS_ID.equals( id ) ) {
+                it.remove();
+            }
+        }
+    }
 }

Added: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/explorer/TitlePanel.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/explorer/TitlePanel.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/explorer/TitlePanel.java	2010-10-15 06:26:59 UTC (rev 35525)
@@ -0,0 +1,40 @@
+/*
+ * Copyright 2010 JBoss Inc
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.drools.guvnor.client.explorer;
+
+import org.drools.guvnor.client.LoggedInUserInfo;
+
+import com.google.gwt.user.client.ui.DockPanel;
+import com.google.gwt.user.client.ui.HTML;
+
+/**
+ * The title bar at the top of the application.
+ * 
+ * @author rikkola
+ *
+ */
+public class TitlePanel extends DockPanel {
+
+    public TitlePanel(LoggedInUserInfo uif) {
+        setVerticalAlignment( DockPanel.ALIGN_MIDDLE );
+        add( new HTML( "<div class='header'><img src='header_logo.gif' /></div>" ),
+             DockPanel.WEST );
+        add( uif,
+             DockPanel.EAST );
+        setStyleName( "header" );
+        setWidth( "100%" );
+    }
+}

Modified: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/images/Images.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/images/Images.java	2010-10-15 05:42:54 UTC (rev 35524)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/images/Images.java	2010-10-15 06:26:59 UTC (rev 35525)
@@ -1,4 +1,4 @@
-/**
+/*
  * Copyright 2010 JBoss Inc
  *
  * Licensed under the Apache License, Version 2.0 (the "License");



More information about the jboss-svn-commits mailing list