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

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Mon Oct 18 04:36:51 EDT 2010


Author: Rikkola
Date: 2010-10-18 04:36:50 -0400 (Mon, 18 Oct 2010)
New Revision: 35553

Added:
   labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/util/TabOpener.java
   labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/util/Util.java
Removed:
   labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/common/Util.java
Modified:
   labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/admin/ArchivedAssetManager.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/DeploymentNewMenu.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/ExplorerNodeConfig.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/NavigationPanel.java
   labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/explorer/PackagesNewMenu.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/explorer/RulesNewMenu.java
   labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/packages/SnapshotDiffView.java
   labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/packages/SnapshotView.java
   labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/ruleeditor/DiscussionWidget.java
   labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/public/Guvnor.css
   labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/ServiceImplementation.java
Log:
[#GUVNOR-673] Make it easier to open tabs any where in the code 

Modified: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/admin/ArchivedAssetManager.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/admin/ArchivedAssetManager.java	2010-10-18 02:59:58 UTC (rev 35552)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/admin/ArchivedAssetManager.java	2010-10-18 08:36:50 UTC (rev 35553)
@@ -18,7 +18,7 @@
 
 import org.drools.guvnor.client.common.GenericCallback;
 import org.drools.guvnor.client.common.PrettyFormLayout;
-import org.drools.guvnor.client.explorer.ExplorerViewCenterPanel;
+import org.drools.guvnor.client.messages.Constants;
 import org.drools.guvnor.client.rpc.PackageConfigData;
 import org.drools.guvnor.client.rpc.RepositoryServiceFactory;
 import org.drools.guvnor.client.rpc.ValidatedResponse;
@@ -26,15 +26,14 @@
 import org.drools.guvnor.client.rulelist.AssetItemGrid;
 import org.drools.guvnor.client.rulelist.AssetItemGridDataLoader;
 import org.drools.guvnor.client.rulelist.EditItemEvent;
-import org.drools.guvnor.client.messages.Constants;
+import org.drools.guvnor.client.util.TabOpener;
 
+import com.google.gwt.core.client.GWT;
 import com.google.gwt.user.client.Window;
 import com.google.gwt.user.client.ui.Composite;
 import com.google.gwt.user.client.ui.HTML;
 import com.google.gwt.user.client.ui.ListBox;
 import com.google.gwt.user.client.ui.VerticalPanel;
-import com.google.gwt.core.client.GWT;
-
 import com.gwtext.client.core.EventObject;
 import com.gwtext.client.widgets.Button;
 import com.gwtext.client.widgets.Toolbar;
@@ -47,186 +46,177 @@
 
 public class ArchivedAssetManager extends Composite {
 
+    private AssetItemGrid grid;
+    private ListBox       packages  = new ListBox( true );
+    private Constants     constants = GWT.create( Constants.class );
 
-	private AssetItemGrid grid;
-	private ListBox packages = new ListBox(true);
-    private Constants constants = GWT.create(Constants.class);
+    public ArchivedAssetManager() {
 
-    public ArchivedAssetManager(final ExplorerViewCenterPanel tab) {
-
-
         PrettyFormLayout pf = new PrettyFormLayout();
 
         VerticalPanel header = new VerticalPanel();
-        header.add(new HTML(constants.ArchivedItems()));
+        header.add( new HTML( constants.ArchivedItems() ) );
 
-        pf.addHeader("images/backup_large.png", header); //NON-NLS
+        pf.addHeader( "images/backup_large.png",
+                      header ); //NON-NLS
 
+        final TabOpener tabOpener = TabOpener.getInstance();
 
-
-
-        EditItemEvent edit = new EditItemEvent () {
+        EditItemEvent edit = new EditItemEvent() {
             public void open(String key) {
-            	tab.openAsset(key);
+                tabOpener.openAsset( key );
             }
 
             public void open(MultiViewRow[] rows) {
                 for ( MultiViewRow row : rows ) {
-                    tab.openAsset( row.uuid );
+                    tabOpener.openAsset( row.uuid );
                 }
             }
         };
-        grid = new AssetItemGrid(edit, AssetItemGrid.ARCHIVED_RULE_LIST_TABLE_ID, new AssetItemGridDataLoader() {
-			public void loadData(int startRow, int numberOfRows,
-					GenericCallback cb) {
-				RepositoryServiceFactory.getService().loadArchivedAssets(startRow, numberOfRows, cb);
-			}
-        });
+        grid = new AssetItemGrid( edit,
+                                  AssetItemGrid.ARCHIVED_RULE_LIST_TABLE_ID,
+                                  new AssetItemGridDataLoader() {
+                                      public void loadData(int startRow,
+                                                           int numberOfRows,
+                                                           GenericCallback cb) {
+                                          RepositoryServiceFactory.getService().loadArchivedAssets( startRow,
+                                                                                                    numberOfRows,
+                                                                                                    cb );
+                                      }
+                                  } );
 
-
         loadPackages();
         Toolbar tb = new Toolbar();
         final ToolbarButton restorePackage = new ToolbarButton();
-        restorePackage.addListener(new ButtonListenerAdapter() {
-        			public void onClick(
-        					Button button,
-        					EventObject e) {
-        				restorePackage(packages.getValue(packages.getSelectedIndex()));
-        			}
+        restorePackage.addListener( new ButtonListenerAdapter() {
+            public void onClick(Button button,
+                                EventObject e) {
+                restorePackage( packages.getValue( packages.getSelectedIndex() ) );
+            }
 
-        		});
-        restorePackage.setText(constants.RestoreSelectedPackage());
-        tb.addButton(restorePackage);
+        } );
+        restorePackage.setText( constants.RestoreSelectedPackage() );
+        tb.addButton( restorePackage );
 
-
-
-
         final ToolbarButton delPackage = new ToolbarButton();
-        delPackage.setText(constants.PermanentlyDeletePackage());
-        delPackage.addListener(new ButtonListenerAdapter() {
-        			public void onClick(
-        					Button button,
-        					EventObject e) {
-        				if (Window.confirm(constants.AreYouSurePackageDelete())) {
-        					deletePackage(packages.getValue(packages.getSelectedIndex()));
-        				}
-        			}
-        });
-        tb.addButton(delPackage);
+        delPackage.setText( constants.PermanentlyDeletePackage() );
+        delPackage.addListener( new ButtonListenerAdapter() {
+            public void onClick(Button button,
+                                EventObject e) {
+                if ( Window.confirm( constants.AreYouSurePackageDelete() ) ) {
+                    deletePackage( packages.getValue( packages.getSelectedIndex() ) );
+                }
+            }
+        } );
+        tb.addButton( delPackage );
 
+        pf.startSection( constants.ArchivedPackagesList() );
 
+        pf.addRow( tb );
+        pf.addRow( packages );
 
-        pf.startSection(constants.ArchivedPackagesList());
-
-        pf.addRow(tb);
-        pf.addRow(packages);
-
-
         pf.endSection();
 
         tb = new Toolbar();
         final ToolbarButton restoreAsset = new ToolbarButton();
-        restoreAsset.setText(constants.RestoreSelectedAsset());
-        tb.addButton(restoreAsset);
-        restoreAsset.addListener(new ButtonListenerAdapter() {
-        			public void onClick(Button button, EventObject e) {
-                    	if (grid.getSelectedRowUUIDs() == null) {
-                    		Window.alert(constants.PleaseSelectAnItemToRestore());
-                    		return;
-                    	}
-                        RepositoryServiceFactory.getService().archiveAssets( grid.getSelectedRowUUIDs(), false, new GenericCallback() {
-                            public void onSuccess(Object arg0) {
-                                Window.alert(constants.ItemRestored());
-                                grid.refreshGrid();
-                            }
-                        });
-        			};
-        });
+        restoreAsset.setText( constants.RestoreSelectedAsset() );
+        tb.addButton( restoreAsset );
+        restoreAsset.addListener( new ButtonListenerAdapter() {
+            public void onClick(Button button,
+                                EventObject e) {
+                if ( grid.getSelectedRowUUIDs() == null ) {
+                    Window.alert( constants.PleaseSelectAnItemToRestore() );
+                    return;
+                }
+                RepositoryServiceFactory.getService().archiveAssets( grid.getSelectedRowUUIDs(),
+                                                                     false,
+                                                                     new GenericCallback() {
+                                                                         public void onSuccess(Object arg0) {
+                                                                             Window.alert( constants.ItemRestored() );
+                                                                             grid.refreshGrid();
+                                                                         }
+                                                                     } );
+            };
+        } );
 
-
         final ToolbarButton deleteAsset = new ToolbarButton();
-        deleteAsset.setText(constants.DeleteSelectedAsset());
-        tb.addButton(deleteAsset);
+        deleteAsset.setText( constants.DeleteSelectedAsset() );
+        tb.addButton( deleteAsset );
 
-        deleteAsset.addListener(
-        		new ButtonListenerAdapter() {
-        			public void onClick(
-        					Button button,
-        					EventObject e) {
-                    	if (grid.getSelectedRowUUIDs() == null) {
-                    		Window.alert(constants.PleaseSelectAnItemToPermanentlyDelete());
-                    		return;
-                    	}
-                    	if (!Window.confirm(constants.AreYouSureDeletingAsset())) {
-                    		return;
-                    	}
-                        RepositoryServiceFactory.getService().removeAssets( grid.getSelectedRowUUIDs(), new GenericCallback() {
+        deleteAsset.addListener( new ButtonListenerAdapter() {
+            public void onClick(Button button,
+                                EventObject e) {
+                if ( grid.getSelectedRowUUIDs() == null ) {
+                    Window.alert( constants.PleaseSelectAnItemToPermanentlyDelete() );
+                    return;
+                }
+                if ( !Window.confirm( constants.AreYouSureDeletingAsset() ) ) {
+                    return;
+                }
+                RepositoryServiceFactory.getService().removeAssets( grid.getSelectedRowUUIDs(),
+                                                                    new GenericCallback() {
 
-                            public void onSuccess(Object arg0) {
-                                Window.alert(constants.ItemDeleted());
-                                grid.refreshGrid();
-                            }
-                        });
-        			}
-        		});
+                                                                        public void onSuccess(Object arg0) {
+                                                                            Window.alert( constants.ItemDeleted() );
+                                                                            grid.refreshGrid();
+                                                                        }
+                                                                    } );
+            }
+        } );
 
-        pf.startSection(constants.ArchivedAssets());
-        pf.addRow(tb);
+        pf.startSection( constants.ArchivedAssets() );
+        pf.addRow( tb );
 
-        pf.addRow(grid);
+        pf.addRow( grid );
 
         pf.endSection();
 
-
         initWidget( pf );
     }
 
+    private void deletePackage(final String uuid) {
+        RepositoryServiceFactory.getService().removePackage( uuid,
+                                                             new GenericCallback() {
+                                                                 public void onSuccess(Object data) {
+                                                                     Window.alert( constants.PackageDeleted() );
+                                                                     packages.clear();
+                                                                     loadPackages();
+                                                                 }
+                                                             } );
+    }
 
-	private void deletePackage(final String uuid) {
-		RepositoryServiceFactory.getService().removePackage(uuid, new GenericCallback( ) {
-			public void onSuccess(Object data) {
-				Window.alert(constants.PackageDeleted());
-				packages.clear();
-				loadPackages();
-			}
-		});
-	}
+    private void restorePackage(String uuid) {
+        RepositoryServiceFactory.getService().loadPackageConfig( uuid,
+                                                                 new GenericCallback<PackageConfigData>() {
+                                                                     public void onSuccess(PackageConfigData cf) {
+                                                                         cf.archived = false;
+                                                                         RepositoryServiceFactory.getService().savePackage( cf,
+                                                                                                                            new GenericCallback<ValidatedResponse>() {
+                                                                                                                                public void onSuccess(ValidatedResponse data) {
+                                                                                                                                    Window.alert( constants.PackageRestored() );
+                                                                                                                                    packages.clear();
+                                                                                                                                    loadPackages();
+                                                                                                                                }
+                                                                                                                            } );
+                                                                     }
+                                                                 } );
+    }
 
-
-	private void restorePackage(String uuid) {
-		RepositoryServiceFactory.getService().loadPackageConfig(uuid, new GenericCallback<PackageConfigData>() {
-			public void onSuccess(PackageConfigData cf) {
-				cf.archived = false;
-				RepositoryServiceFactory.getService().savePackage(cf, new GenericCallback<ValidatedResponse>() {
-					public void onSuccess(ValidatedResponse data) {
-						Window.alert(constants.PackageRestored());
-						packages.clear();
-						loadPackages();
-					}
-				});
-			}
-		});
-	}
-
-
-
     private ListBox loadPackages() {
 
-    	RepositoryServiceFactory.getService().listArchivedPackages(new GenericCallback<PackageConfigData[]>() {
-			public void onSuccess(PackageConfigData[] configs) {
-				for (int i = 0; i < configs.length; i++) {
-						packages.addItem(configs[i].name, configs[i].uuid);
-				}
-				if (configs.length == 0) {
-					packages.addItem(constants.noArchivedPackages());
-				}
-			}
-    	});
+        RepositoryServiceFactory.getService().listArchivedPackages( new GenericCallback<PackageConfigData[]>() {
+            public void onSuccess(PackageConfigData[] configs) {
+                for ( int i = 0; i < configs.length; i++ ) {
+                    packages.addItem( configs[i].name,
+                                      configs[i].uuid );
+                }
+                if ( configs.length == 0 ) {
+                    packages.addItem( constants.noArchivedPackages() );
+                }
+            }
+        } );
 
+        return packages;
+    }
 
-		return packages;
-	}
-
-
-
 }
\ No newline at end of file

Deleted: 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-18 02:59:58 UTC (rev 35552)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/common/Util.java	2010-10-18 08:36:50 UTC (rev 35553)
@@ -1,56 +0,0 @@
-/*
- * 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.resources.client.ImageResource;
-import com.google.gwt.user.client.ui.AbstractImagePrototype;
-import com.google.gwt.user.client.ui.HTML;
-
-public class Util {
-
-    /**
-     * Get a string representation of the header that includes an image and some
-     * text.
-     * 
-     * @param image the {@link ImageResource} to add next to the header
-     * @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;
-    }
-
-    /**
-     * Get a string representation of the header that includes an image and some
-     * text.
-     * 
-     * @param image the {@link ImageResource} to add next to the header
-     * @param text the header text
-     * @return the header as a string
-     */
-    public static HTML getHeaderHTML(ImageResource image,
-                                     String text) {
-
-        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-18 02:59:58 UTC (rev 35552)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/explorer/AbstractTree.java	2010-10-18 08:36:50 UTC (rev 35553)
@@ -10,21 +10,21 @@
 import com.google.gwt.user.client.ui.Tree;
 import com.google.gwt.user.client.ui.TreeItem;
 
-import org.drools.guvnor.client.common.Util;
 import org.drools.guvnor.client.ruleeditor.MultiViewRow;
 import org.drools.guvnor.client.ruleeditor.NewAssetWizard;
 import org.drools.guvnor.client.rulelist.EditItemEvent;
+import org.drools.guvnor.client.util.TabOpener;
+import org.drools.guvnor.client.util.Util;
 
 public abstract class AbstractTree extends Composite
     implements
     SelectionHandler<TreeItem> {
-    protected String                  name;
-    protected ImageResource           image;
+    protected String                name;
+    protected ImageResource         image;
 
-    protected ExplorerViewCenterPanel centertabbedPanel;
-    protected final Tree              mainTree;
+    protected final Tree            mainTree;
 
-    protected Map<TreeItem, String>   itemWidgets = new HashMap<TreeItem, String>();
+    protected Map<TreeItem, String> itemWidgets = new HashMap<TreeItem, String>();
 
     /**
      * Constructor.
@@ -32,8 +32,7 @@
      * @param ExplorerViewCenterPanel
      *            the centertabbedPanel
      */
-    public AbstractTree(ExplorerViewCenterPanel centertabbedPanel) {
-        this.centertabbedPanel = centertabbedPanel;
+    public AbstractTree() {
 
         mainTree = getTree();
 
@@ -59,14 +58,16 @@
     protected void launchWizard(String format,
                                 String title,
                                 boolean showCats) {
+        final TabOpener tabOpener = TabOpener.getInstance();
+
         NewAssetWizard pop = new NewAssetWizard( new EditItemEvent() {
                                                      public void open(String key) {
-                                                         centertabbedPanel.openAsset( key );
+                                                         tabOpener.openAsset( key );
                                                      }
 
                                                      public void open(MultiViewRow[] rows) {
                                                          for ( MultiViewRow row : rows ) {
-                                                             centertabbedPanel.openAsset( row.uuid );
+                                                             tabOpener.openAsset( row.uuid );
                                                          }
                                                      }
                                                  },

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-18 02:59:58 UTC (rev 35552)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/explorer/AdministrationTree.java	2010-10-18 08:36:50 UTC (rev 35553)
@@ -1,4 +1,4 @@
-/**
+/*
  * Copyright 2010 JBoss Inc
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -16,41 +16,21 @@
 
 package org.drools.guvnor.client.explorer;
 
-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;
 import org.drools.guvnor.client.images.Images;
 import org.drools.guvnor.client.messages.Constants;
+import org.drools.guvnor.client.util.TabOpener;
 
 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;
 
 public class AdministrationTree extends AbstractTree {
 
-    private static final String REPOCONFIG            = "repoconfig";
-    private static final String RULE_VERIFIER_MANAGER = "ruleVerifierManager";
-    private static final String SECURITY_PERMISSIONS  = "securityPermissions";
-    private static final String ERROR_LOG             = "errorLog";
-    private static final String BAKMAN                = "bakman";
-    private static final String STATEMAN              = "stateman";
-    private static final String ARCHMAN               = "archman";
-    private static final String CATMAN                = "catman";
+    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 );
-
-    public AdministrationTree(ExplorerViewCenterPanel tabbedPanel) {
-        super( tabbedPanel );
+    public AdministrationTree() {
         this.name = constants.Administration();
         this.image = images.rules();
 
@@ -65,82 +45,11 @@
 
     // Show the associated widget in the deck panel
     public void onSelection(SelectionEvent<TreeItem> event) {
+        TabOpener tabOpener = TabOpener.getInstance();
         TreeItem item = event.getSelectedItem();
         String widgetID = itemWidgets.get( item );
 
         int id = Integer.parseInt( widgetID );
-        switch ( id ) {
-            case 0 :
-                if ( !centertabbedPanel.showIfOpen( CATMAN ) ) {
-                    centertabbedPanel.addTab( constants.CategoryManager(),
-                                              new CategoryManager(),
-                                              CATMAN );
-                }
-                break;
-            case 1 :
-                if ( !centertabbedPanel.showIfOpen( ARCHMAN ) ) {
-                    centertabbedPanel.addTab( constants.ArchivedManager(),
-                                              new ArchivedAssetManager( centertabbedPanel ),
-                                              ARCHMAN );
-                }
-                break;
-
-            case 2 :
-                if ( !centertabbedPanel.showIfOpen( STATEMAN ) ) {
-                    centertabbedPanel.addTab( constants.StateManager(),
-                                              new StateManager(),
-                                              STATEMAN );
-                }
-                break;
-            case 3 :
-                if ( !centertabbedPanel.showIfOpen( BAKMAN ) ) {
-                    centertabbedPanel.addTab( constants.ImportExport(),
-                                              new BackupManager(),
-                                              BAKMAN );
-                }
-                break;
-
-            case 4 :
-                if ( !centertabbedPanel.showIfOpen( ERROR_LOG ) ) {
-                    centertabbedPanel.addTab( constants.EventLog(),
-                                              new LogViewer(),
-                                              ERROR_LOG );
-                }
-                break;
-            case 5 :
-                if ( !centertabbedPanel.showIfOpen( SECURITY_PERMISSIONS ) ) {
-                    centertabbedPanel.addTab( constants.UserPermissionMappings(),
-                                              new PermissionViewer(),
-                                              SECURITY_PERMISSIONS );
-                }
-                break;
-            case 6 :
-                Frame aboutInfoFrame = new Frame( "../AboutInfo.html" ); //NON-NLS
-
-                FormStylePopup aboutPop = new FormStylePopup();
-                aboutPop.setWidth( 600 + "px" );
-                aboutPop.setTitle( constants.About() );
-                String hhurl = GWT.getModuleBaseURL() + "webdav";
-                aboutPop.addAttribute( constants.WebDAVURL() + ":",
-                                       new SmallLabel( "<b>" + hhurl + "</b>" ) );
-                aboutPop.addAttribute( constants.Version() + ":",
-                                       aboutInfoFrame );
-                aboutPop.show();
-                break;
-
-            case 7 :
-                if ( !centertabbedPanel.showIfOpen( RULE_VERIFIER_MANAGER ) ) {
-                    centertabbedPanel.addTab( constants.RulesVerificationManager(),
-                                              new RuleVerifierManager(),
-                                              RULE_VERIFIER_MANAGER );
-                }
-                break;
-            case 8 :
-                if ( !centertabbedPanel.showIfOpen( REPOCONFIG ) ) //NON-NLS
-                centertabbedPanel.addTab( constants.RepositoryConfig(),
-                                          new RepoConfigManager(),
-                                          REPOCONFIG );
-                break;
-        }
+        tabOpener.openAdministrationSelection( id );
     }
 }

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-18 02:59:58 UTC (rev 35552)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/explorer/BrowseTree.java	2010-10-18 08:36:50 UTC (rev 35553)
@@ -1,4 +1,4 @@
-/**
+/*
  * Copyright 2010 JBoss Inc
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -16,27 +16,21 @@
 
 package org.drools.guvnor.client.explorer;
 
-import java.util.HashMap;
 import java.util.Iterator;
 import java.util.Map;
 
-import org.drools.guvnor.client.common.GenericCallback;
-import org.drools.guvnor.client.rpc.*;
-import org.drools.guvnor.client.ruleeditor.MultiViewRow;
-import org.drools.guvnor.client.rulelist.AssetItemGrid;
-import org.drools.guvnor.client.rulelist.AssetItemGridDataLoader;
-import org.drools.guvnor.client.rulelist.EditItemEvent;
 import org.drools.guvnor.client.images.Images;
 import org.drools.guvnor.client.messages.Constants;
+import org.drools.guvnor.client.rpc.TableConfig;
+import org.drools.guvnor.client.rulelist.AssetItemGrid;
+import org.drools.guvnor.client.util.TabOpener;
 
-import com.google.gwt.user.client.ui.Tree;
-import com.google.gwt.user.client.ui.TreeItem;
-import com.google.gwt.user.client.Window;
-import com.google.gwt.user.client.Command;
 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 com.google.gwt.user.client.ui.Tree;
+import com.google.gwt.user.client.ui.TreeItem;
 
 public class BrowseTree extends AbstractTree
     implements
@@ -74,8 +68,7 @@
                                          ExplorerNodeConfig.INCOMING_ID );
     }
 
-    public BrowseTree(ExplorerViewCenterPanel tabbedPanel) {
-        super( tabbedPanel );
+    public BrowseTree() {
         this.name = constants.Browse();
         this.image = images.ruleAsset();
 
@@ -103,17 +96,19 @@
         TreeItem item = event.getSelectedItem();
         String widgetID = itemWidgets.get( item );
 
+        TabOpener opener = TabOpener.getInstance();
+
         if ( widgetID.equals( ExplorerNodeConfig.FIND_ID ) ) {
-            centertabbedPanel.openFind();
+            opener.openFind();
         } else if ( widgetID.equals( ExplorerNodeConfig.INCOMING_ID ) || widgetID.equals( ExplorerNodeConfig.RECENT_EDITED_ID ) || widgetID.equals( ExplorerNodeConfig.RECENT_VIEWED_ID ) ) {
-            openInbox( item.getText(),
-                       widgetID );
+            opener.openInbox( item.getText(),
+                              widgetID );
         } else if ( widgetID.startsWith( ExplorerNodeConfig.STATES_ID ) ) {
-            openState( item.getText(),
-                       widgetID );
+            opener.openState( item.getText(),
+                              widgetID );
         } else if ( widgetID.startsWith( ExplorerNodeConfig.CATEGORY_ID ) ) {
-            openCategory( item.getText(),
-                          widgetID );
+            opener.openCategory( item.getText(),
+                                 widgetID );
         }
     }
 
@@ -154,135 +149,4 @@
         }
     }
 
-    /**
-     * 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 );
-        }
-    }
-
-    /**
-     * 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() {
-                public void messageReceived(PushResponse response) {
-                    if ( response.messageType.equals( "statusChange" ) && (response.message).equals( stateName ) ) {
-                        list.refreshGrid();
-                    }
-                }
-            };
-            PushClient.instance().subscribe( push );
-            list.addUnloadListener( new Command() {
-                public void execute() {
-                    PushClient.instance().unsubscribe( push );
-                }
-            } );
-
-            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() {
-                public void messageReceived(PushResponse response) {
-                    if ( response.messageType.equals( "categoryChange" ) && response.message.equals( categoryName ) ) {
-                        list.refreshGrid();
-                    }
-                }
-            };
-            PushClient.instance().subscribe( push );
-            list.addUnloadListener( new Command() {
-                public void execute() {
-                    PushClient.instance().unsubscribe( push );
-                }
-            } );
-
-            centertabbedPanel.addTab( (constants.CategoryColon()) + title,
-                                      list,
-                                      widgetID );
-        }
-    }
-
-    private EditItemEvent createEditEvent() {
-        return new EditItemEvent() {
-            public void open(String uuid) {
-                centertabbedPanel.openAsset( uuid );
-            }
-
-            public void open(MultiViewRow[] rows) {
-                for ( MultiViewRow row : rows ) {
-                    centertabbedPanel.openAsset( row.uuid );
-                }
-            }
-        };
-    }
-
-    /**
-     * The URL that will be used to open up assets in a feed.
-     * (by tacking asset id on the end, of course !). 
-     */
-    public static String getSelfURL() {
-        String selfURL = Window.Location.getHref();
-        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/DeploymentNewMenu.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/explorer/DeploymentNewMenu.java	2010-10-18 02:59:58 UTC (rev 35552)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/explorer/DeploymentNewMenu.java	2010-10-18 08:36:50 UTC (rev 35553)
@@ -17,10 +17,10 @@
 package org.drools.guvnor.client.explorer;
 
 
-import org.drools.guvnor.client.common.Util;
 import org.drools.guvnor.client.images.Images;
 import org.drools.guvnor.client.messages.Constants;
 import org.drools.guvnor.client.packages.SnapshotView;
+import org.drools.guvnor.client.util.Util;
 
 
 import com.google.gwt.core.client.GWT;

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-18 02:59:58 UTC (rev 35552)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/explorer/DeploymentTree.java	2010-10-18 08:36:50 UTC (rev 35553)
@@ -16,15 +16,13 @@
 
 package org.drools.guvnor.client.explorer;
 
-import java.util.HashMap;
-import java.util.Map;
-
 import org.drools.guvnor.client.common.GenericCallback;
 import org.drools.guvnor.client.images.Images;
 import org.drools.guvnor.client.messages.Constants;
 import org.drools.guvnor.client.rpc.PackageConfigData;
 import org.drools.guvnor.client.rpc.RepositoryServiceFactory;
 import org.drools.guvnor.client.rpc.SnapshotInfo;
+import org.drools.guvnor.client.util.TabOpener;
 
 import com.google.gwt.core.client.GWT;
 import com.google.gwt.event.logical.shared.OpenEvent;
@@ -41,8 +39,7 @@
 
     private boolean          deploymentPackagesLoaded = false;
 
-    public DeploymentTree(ExplorerViewCenterPanel tabbedPanel) {
-        super( tabbedPanel );
+    public DeploymentTree() {
         this.name = constants.PackageSnapshots();
         this.image = images.deploy();
 
@@ -77,7 +74,8 @@
                                                                      public void onSuccess(SnapshotInfo[] a) {
                                                                          for ( SnapshotInfo snap : a ) {
                                                                              if ( snap.name.equals( snapName ) ) {
-                                                                                 centertabbedPanel.openSnapshot( snap );
+                                                                                 TabOpener opener = TabOpener.getInstance();
+                                                                                 opener.openSnapshot( snap );
                                                                                  return;
                                                                              }
                                                                          }

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-18 02:59:58 UTC (rev 35552)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/explorer/ExplorerLayoutManager.java	2010-10-18 08:36:50 UTC (rev 35553)
@@ -18,6 +18,7 @@
 
 import org.drools.guvnor.client.LoggedInUserInfo;
 import org.drools.guvnor.client.security.Capabilities;
+import org.drools.guvnor.client.util.TabOpener;
 
 import com.google.gwt.dom.client.Style.Unit;
 import com.google.gwt.user.client.History;
@@ -46,6 +47,8 @@
 
         String tok = History.getToken();
 
+        TabOpener.initIstance( centertabbedPanel );
+
         //we use this to decide what to display.
         BookmarkInfo bookmarkInfo = handleHistoryToken( tok );
         ExplorerLayoutManager.capabilities = caps;
@@ -54,14 +57,16 @@
             titlePanel = new TitlePanel( uif );
         }
 
-        navigationStackLayoutPanel = new NavigationPanel( centertabbedPanel );
+        navigationStackLayoutPanel = new NavigationPanel();
         setupMainPanel( bookmarkInfo );
 
+        TabOpener tabOpener = TabOpener.getInstance();
+
         //Open default widgets
         if ( bookmarkInfo.isLoadAsset() ) {
-            centertabbedPanel.openAsset( bookmarkInfo.getAssetId() );
+            tabOpener.openAsset( bookmarkInfo.getAssetId() );
         }
-        centertabbedPanel.openFind();
+        tabOpener.openFind();
     }
 
     /**

Modified: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/explorer/ExplorerNodeConfig.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/explorer/ExplorerNodeConfig.java	2010-10-18 02:59:58 UTC (rev 35552)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/explorer/ExplorerNodeConfig.java	2010-10-18 08:36:50 UTC (rev 35553)
@@ -20,12 +20,12 @@
 
 import org.drools.guvnor.client.common.AssetFormats;
 import org.drools.guvnor.client.common.GenericCallback;
-import org.drools.guvnor.client.common.Util;
 import org.drools.guvnor.client.images.Images;
 import org.drools.guvnor.client.messages.Constants;
 import org.drools.guvnor.client.rpc.PackageConfigData;
 import org.drools.guvnor.client.rpc.RepositoryServiceFactory;
 import org.drools.guvnor.client.security.Capabilities;
+import org.drools.guvnor.client.util.Util;
 
 import com.google.gwt.core.client.GWT;
 import com.google.gwt.event.logical.shared.OpenEvent;

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-18 02:59:58 UTC (rev 35552)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/explorer/ExplorerViewCenterPanel.java	2010-10-18 08:36:50 UTC (rev 35553)
@@ -20,36 +20,17 @@
 import java.util.HashMap;
 import java.util.Map;
 
-import org.drools.guvnor.client.common.AssetFormats;
-import org.drools.guvnor.client.common.FormStylePopup;
-import org.drools.guvnor.client.common.GenericCallback;
-import org.drools.guvnor.client.common.ImageButton;
 import org.drools.guvnor.client.common.LoadingPopup;
 import org.drools.guvnor.client.images.Images;
 import org.drools.guvnor.client.messages.Constants;
 import org.drools.guvnor.client.packages.PackageEditor;
-import org.drools.guvnor.client.packages.SnapshotView;
-import org.drools.guvnor.client.packages.SuggestionCompletionCache;
-import org.drools.guvnor.client.rpc.PackageConfigData;
-import org.drools.guvnor.client.rpc.RepositoryServiceFactory;
-import org.drools.guvnor.client.rpc.RuleAsset;
-import org.drools.guvnor.client.rpc.SnapshotInfo;
 import org.drools.guvnor.client.ruleeditor.GuvnorEditor;
-import org.drools.guvnor.client.ruleeditor.MultiViewEditor;
-import org.drools.guvnor.client.ruleeditor.MultiViewRow;
-import org.drools.guvnor.client.ruleeditor.RuleViewer;
-import org.drools.guvnor.client.rulelist.EditItemEvent;
-import org.drools.guvnor.client.rulelist.QueryWidget;
-import org.drools.guvnor.client.util.Format;
 
 import com.google.gwt.core.client.GWT;
 import com.google.gwt.dom.client.Style.Unit;
 import com.google.gwt.event.dom.client.ClickEvent;
 import com.google.gwt.event.dom.client.ClickHandler;
-import com.google.gwt.user.client.Command;
 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.Composite;
 import com.google.gwt.user.client.ui.HTML;
 import com.google.gwt.user.client.ui.HorizontalPanel;
@@ -65,7 +46,6 @@
  * @author Fernando Meyer, Michael Neale
  */
 public class ExplorerViewCenterPanel extends Composite {
-    private Constants                  constants            = ((Constants) GWT.create( Constants.class ));
     private static Images              images               = (Images) GWT.create( Images.class );
 
     private final TabLayoutPanel       tabLayoutPanel;
@@ -79,8 +59,6 @@
 
     private Map<Panel, String[]>       itemWidgets          = new HashMap<Panel, String[]>();
 
-    //private Button                      closeAllButton;
-
     public ExplorerViewCenterPanel() {
         tabLayoutPanel = new TabLayoutPanel( 2,
                                              Unit.EM );
@@ -135,8 +113,8 @@
             this.openedAssetEditors.put( panelId,
                                          (GuvnorEditor) widget );
         } else if ( widget instanceof PackageEditor ) {
-            this.openedPackageEditors.put( tabname,
-                                           (PackageEditor) widget );
+            this.getOpenedPackageEditors().put( tabname,
+                                                (PackageEditor) widget );
         }
 
         openedTabs.put( keys,
@@ -204,209 +182,8 @@
         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
-
-        if ( !showIfOpen( uuid ) ) {
-
-            final boolean[] loading = {true};
-
-            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 );
-                                                                                                                                       }
-
-                                                                                                                                       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 );
-                                                                                                                                   }
-
-                                                                                                                                   LoadingPopup.close();
-                                                                                                                               }
-                                                                                                                           } );
-                                                                     }
-                                                                 } );
-        }
+    public Map<String, PackageEditor> getOpenedPackageEditors() {
+        return openedPackageEditors;
     }
 
-    public void openAssets(MultiViewRow[] rows) {
-
-        String blockingAssetName = null;
-        final String[] uuids = new String[rows.length];
-        final String[] names = new String[rows.length];
-
-        for ( int i = 0; i < rows.length; i++ ) {
-            // Check if any of these assets are already opened.
-            if ( showIfOpen( rows[i].uuid ) ) {
-                blockingAssetName = rows[i].name;
-                break;
-            }
-            uuids[i] = rows[i].uuid;
-            names[i] = rows[i].name;
-        }
-
-        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 );
-                                                             }
-
-                                                             public void open(MultiViewRow[] rows) {
-                                                                 for ( MultiViewRow row : rows ) {
-                                                                     openAsset( row.uuid );
-                                                                 }
-                                                             }
-                                                         } );
-
-        multiview.setCloseCommand( new Command() {
-            public void execute() {
-                close( Arrays.toString( 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) {
-
-        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 openFind() {
-        if ( !showIfOpen( "FIND" ) ) { //NON-NLS
-            this.addTab( constants.Find(),
-                         new QueryWidget( new EditItemEvent() {
-                             public void open(String uuid) {
-                                 openAsset( uuid );
-                             }
-
-                             public void open(MultiViewRow[] rows) {
-                                 for ( MultiViewRow row : rows ) {
-                                     openAsset( row.uuid );
-                                 }
-                             }
-                         } ),
-                         "FIND" ); //NON-NLS
-
-        }
-    }
-
-    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();
-                                                                         }
-                                                                     } );
-
-        }
-    }
-
 }

Modified: 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	2010-10-18 02:59:58 UTC (rev 35552)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/explorer/NavigationPanel.java	2010-10-18 08:36:50 UTC (rev 35553)
@@ -32,11 +32,8 @@
  */
 public class NavigationPanel extends StackLayoutPanel {
 
-    private final ExplorerViewCenterPanel centertabbedPanel;
-
-    public NavigationPanel(ExplorerViewCenterPanel centertabbedPanel) {
+    public NavigationPanel() {
         super( Unit.EM );
-        this.centertabbedPanel = centertabbedPanel;
 
         addCategoriesPanel();
 
@@ -61,7 +58,7 @@
 
     private void addAdminPanel() {
         DockLayoutPanel adminDockLayoutPanel = new DockLayoutPanel( Unit.EM );
-        AdministrationTree deploymentTreeItem = new AdministrationTree( centertabbedPanel );
+        AdministrationTree deploymentTreeItem = new AdministrationTree();
         ScrollPanel adminTreeItemPanel = new ScrollPanel( deploymentTreeItem );
 
         adminDockLayoutPanel.add( adminTreeItemPanel );
@@ -73,7 +70,7 @@
 
     private void addDeploymentPanel() {
         DockLayoutPanel deploymentDockLayoutPanel = new DockLayoutPanel( Unit.EM );
-        DeploymentTree deploymentTreeItem = new DeploymentTree( centertabbedPanel );
+        DeploymentTree deploymentTreeItem = new DeploymentTree();
         ScrollPanel deploymentTreeItemPanel = new ScrollPanel( deploymentTreeItem );
 
         if ( ExplorerLayoutManager.shouldShow( Capabilities.SHOW_CREATE_NEW_ASSET ) ) {
@@ -90,7 +87,7 @@
 
     private void addQAPanel() {
         DockLayoutPanel qaDockLayoutPanel = new DockLayoutPanel( Unit.EM );
-        QATree qaTreeItem = new QATree( centertabbedPanel );
+        QATree qaTreeItem = new QATree();
         ScrollPanel qaTreeItemPanel = new ScrollPanel( qaTreeItem );
 
         qaDockLayoutPanel.add( qaTreeItemPanel );
@@ -102,7 +99,7 @@
 
     private void addPackagesPanel() {
         DockLayoutPanel packageDockLayoutPanel = new DockLayoutPanel( Unit.EM );
-        final PackagesTree packagesTreeItem = new PackagesTree( centertabbedPanel );
+        final PackagesTree packagesTreeItem = new PackagesTree();
         ScrollPanel packagesTreeItemPanel = new ScrollPanel( packagesTreeItem );
 
         if ( ExplorerLayoutManager.shouldShow( Capabilities.SHOW_CREATE_NEW_ASSET ) ) {
@@ -125,7 +122,7 @@
 
     private void addCategoriesPanel() {
         DockLayoutPanel browseDockLayoutPanel = new DockLayoutPanel( Unit.EM );
-        BrowseTree categoriesTreeItem = new BrowseTree( centertabbedPanel );
+        BrowseTree categoriesTreeItem = new BrowseTree();
         ScrollPanel categoriesTreeItemPanel = new ScrollPanel( categoriesTreeItem );
 
         if ( ExplorerLayoutManager.shouldShow( Capabilities.SHOW_CREATE_NEW_ASSET ) ) {

Modified: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/explorer/PackagesNewMenu.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/explorer/PackagesNewMenu.java	2010-10-18 02:59:58 UTC (rev 35552)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/explorer/PackagesNewMenu.java	2010-10-18 08:36:50 UTC (rev 35553)
@@ -19,11 +19,11 @@
 import org.drools.guvnor.client.common.AssetFormats;
 import org.drools.guvnor.client.common.GenericCallback;
 import org.drools.guvnor.client.common.LoadingPopup;
-import org.drools.guvnor.client.common.Util;
 import org.drools.guvnor.client.images.Images;
 import org.drools.guvnor.client.messages.Constants;
 import org.drools.guvnor.client.packages.NewPackageWizard;
 import org.drools.guvnor.client.rpc.RepositoryServiceFactory;
+import org.drools.guvnor.client.util.Util;
 
 
 import com.google.gwt.core.client.GWT;

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-18 02:59:58 UTC (rev 35552)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/explorer/PackagesTree.java	2010-10-18 08:36:50 UTC (rev 35553)
@@ -16,24 +16,16 @@
 
 package org.drools.guvnor.client.explorer;
 
-import java.util.HashMap;
 import java.util.Map;
 
 import org.drools.guvnor.client.common.GenericCallback;
 import org.drools.guvnor.client.common.RulePackageSelector;
-import org.drools.guvnor.client.common.Util;
 import org.drools.guvnor.client.images.Images;
 import org.drools.guvnor.client.messages.Constants;
 import org.drools.guvnor.client.rpc.PackageConfigData;
-import org.drools.guvnor.client.rpc.PushClient;
-import org.drools.guvnor.client.rpc.PushResponse;
 import org.drools.guvnor.client.rpc.RepositoryServiceFactory;
-import org.drools.guvnor.client.rpc.ServerPushNotification;
-import org.drools.guvnor.client.rpc.TableDataResult;
-import org.drools.guvnor.client.ruleeditor.MultiViewRow;
-import org.drools.guvnor.client.rulelist.AssetItemGrid;
-import org.drools.guvnor.client.rulelist.AssetItemGridDataLoader;
-import org.drools.guvnor.client.rulelist.EditItemEvent;
+import org.drools.guvnor.client.util.TabOpener;
+import org.drools.guvnor.client.util.Util;
 
 import com.google.gwt.core.client.GWT;
 import com.google.gwt.event.logical.shared.SelectionEvent;
@@ -47,8 +39,7 @@
 
     private boolean          packagesLoaded = false;
 
-    public PackagesTree(ExplorerViewCenterPanel tabbedPanel) {
-        super( tabbedPanel );
+    public PackagesTree() {
         this.name = constants.KnowledgeBases();
         this.image = images.packages();
 
@@ -75,7 +66,7 @@
 
     public void loadPackageList() {
         if ( !packagesLoaded ) {
-            setupPackagesTree( this.centertabbedPanel );
+            setupPackagesTree();
             packagesLoaded = true;
         }
     }
@@ -84,10 +75,10 @@
         mainTree.clear();
         itemWidgets.clear();
 
-        setupPackagesTree( centertabbedPanel );
+        setupPackagesTree();
     }
 
-    private void setupPackagesTree(final ExplorerViewCenterPanel tabPanel) {
+    private void setupPackagesTree() {
         TreeItem packageRootNode = mainTree.addItem( Util.getHeader( images.chartOrganisation(),
                                                                      constants.Packages() ) );
         packageRootNode.setState( true );
@@ -190,71 +181,32 @@
     // Show the associated widget in the deck panel
     public void onSelection(SelectionEvent<TreeItem> event) {
         TreeItem node = event.getSelectedItem();
-        //String widgetID = itemWidgets.get(node);
 
+        TabOpener opener = TabOpener.getInstance();
+
         if ( node.getUserObject() instanceof PackageConfigData && !"global".equals( ((PackageConfigData) node.getUserObject()).name ) ) {
             PackageConfigData pc = (PackageConfigData) node.getUserObject();
             RulePackageSelector.currentlySelectedPackage = pc.name;
 
             String uuid = pc.uuid;
-            centertabbedPanel.openPackageEditor( uuid,
-                                                 new Command() {
-                                                     public void execute() {
-                                                         // refresh the package tree.
-                                                         refreshTree();
-                                                     }
-                                                 } );
+            opener.openPackageEditor( uuid,
+                                      new Command() {
+                                          public void execute() {
+                                              // refresh the package tree.
+                                              refreshTree();
+                                          }
+                                      } );
         } else if ( node.getUserObject() instanceof Object[] ) {
-            //Object[] uo = (Object[]) node.getUserObject();
-            //final String[] fmts = (String[]) uo[0];
-            final String[] fmts = (String[]) node.getUserObject();
-            final PackageConfigData pc = (PackageConfigData) node.getParentItem().getUserObject();
-            RulePackageSelector.currentlySelectedPackage = pc.name;
-            String key = key( fmts,
-                              pc );
-            if ( !centertabbedPanel.showIfOpen( key ) ) {
-
-                final AssetItemGrid list = new AssetItemGrid( new EditItemEvent() {
-                                                                  public void open(String uuid) {
-                                                                      centertabbedPanel.openAsset( uuid );
-                                                                  }
-
-                                                                  public void open(MultiViewRow[] rows) {
-                                                                      centertabbedPanel.openAssets( rows );
-                                                                  }
-                                                              },
-                                                              AssetItemGrid.PACKAGEVIEW_LIST_TABLE_ID,
-                                                              new AssetItemGridDataLoader() {
-                                                                  public void loadData(int startRow,
-                                                                                       int numberOfRows,
-                                                                                       GenericCallback<TableDataResult> cb) {
-                                                                      RepositoryServiceFactory.getService().listAssets( pc.uuid,
-                                                                                                                        fmts,
-                                                                                                                        startRow,
-                                                                                                                        numberOfRows,
-                                                                                                                        AssetItemGrid.PACKAGEVIEW_LIST_TABLE_ID,
-                                                                                                                        cb );
-                                                                  }
-                                                              },
-                                                              GWT.getModuleBaseURL() + "feed/package?name=" + pc.name + "&viewUrl=" + BrowseTree.getSelfURL() + "&status=*" );
-                centertabbedPanel.addTab( node.getText() + " [" + pc.name + "]",
-                                          list,
-                                          key );
-
-                final ServerPushNotification sub = new ServerPushNotification() {
-                    public void messageReceived(PushResponse response) {
-                        if ( response.messageType.equals( "packageChange" ) && response.message.equals( pc.name ) ) {
-                            list.refreshGrid();
-                        }
-                    }
-                };
-                PushClient.instance().subscribe( sub );
-                list.addUnloadListener( new Command() {
-                    public void execute() {
-                        PushClient.instance().unsubscribe( sub );
-                    }
-                } );
-            }
+            final String[] formats = (String[]) node.getUserObject();
+            final PackageConfigData packageConfigData = (PackageConfigData) node.getParentItem().getUserObject();
+            RulePackageSelector.currentlySelectedPackage = packageConfigData.name;
+            String key = key( formats,
+                              packageConfigData );
+            opener.openPackageViewAssets( packageConfigData.uuid,
+                                          packageConfigData.name,
+                                          key,
+                                          formats,
+                                          node.getText() );
         }
 
     }

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-18 02:59:58 UTC (rev 35552)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/explorer/QATree.java	2010-10-18 08:36:50 UTC (rev 35553)
@@ -16,37 +16,31 @@
 
 package org.drools.guvnor.client.explorer;
 
-import java.util.HashMap;
 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;
 import org.drools.guvnor.client.messages.Constants;
-import org.drools.guvnor.client.qa.AnalysisView;
-import org.drools.guvnor.client.qa.ScenarioPackageView;
 import org.drools.guvnor.client.rpc.PackageConfigData;
 import org.drools.guvnor.client.rpc.RepositoryServiceFactory;
-import org.drools.guvnor.client.ruleeditor.MultiViewRow;
-import org.drools.guvnor.client.rulelist.EditItemEvent;
-import org.drools.guvnor.client.util.Format;
+import org.drools.guvnor.client.util.TabOpener;
+import org.drools.guvnor.client.util.Util;
 
+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 com.google.gwt.user.client.ui.Tree;
+import com.google.gwt.user.client.ui.TreeItem;
+
 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 QATree(ExplorerViewCenterPanel tabbedPanel) {
-        super( tabbedPanel );
+    public QATree() {
         this.name = constants.QA1();
         this.image = images.analyze();
 
@@ -67,51 +61,14 @@
             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 );
-                        }
+            TabOpener opener = TabOpener.getInstance();
 
-                        public void open(MultiViewRow[] rows) {
-                            for ( MultiViewRow row : rows ) {
-                                centertabbedPanel.openAsset( row.uuid );
-                            }
-                        }
-                    };
-
-                    String m = Format.format( constants.ScenariosForPackage(),
-                                              pc.name );
-                    centertabbedPanel.addTab( m,
-                                              new ScenarioPackageView( pc.uuid,
-                                                                       pc.name,
-                                                                       edit,
-                                                                       centertabbedPanel ),
-                                              "scenarios" + pc.uuid );
-                }
+            if ( ExplorerNodeConfig.TEST_SCENARIOS_ID.equals( id ) ) {
+                opener.openTestScenario( pc.uuid,
+                                         pc.name );
             } 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 );
-                }
+                opener.openVerifierView( pc.uuid,
+                                         pc.name );
             }
         }
     }
@@ -134,7 +91,6 @@
                         itemWidgets.put( pkg,
                                          ExplorerNodeConfig.TEST_SCENARIOS_ID );
                     }
-                    //scenarios.removeItem(scenarios.getChild(0));
                 }
             } );
         } else if ( ExplorerNodeConfig.ANALYSIS_ROOT_ID.equals( itemWidgets.get( node ) ) ) {

Modified: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/explorer/RulesNewMenu.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/explorer/RulesNewMenu.java	2010-10-18 02:59:58 UTC (rev 35552)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/explorer/RulesNewMenu.java	2010-10-18 08:36:50 UTC (rev 35553)
@@ -17,9 +17,9 @@
 package org.drools.guvnor.client.explorer;
 
 import org.drools.guvnor.client.common.AssetFormats;
-import org.drools.guvnor.client.common.Util;
 import org.drools.guvnor.client.images.Images;
 import org.drools.guvnor.client.messages.Constants;
+import org.drools.guvnor.client.util.Util;
 
 import com.google.gwt.core.client.GWT;
 import com.google.gwt.user.client.Command;

Modified: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/packages/SnapshotDiffView.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/packages/SnapshotDiffView.java	2010-10-18 02:59:58 UTC (rev 35552)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/packages/SnapshotDiffView.java	2010-10-18 08:36:50 UTC (rev 35553)
@@ -21,6 +21,7 @@
 import org.drools.guvnor.client.rpc.SnapshotDiff;
 import org.drools.guvnor.client.rpc.SnapshotDiffs;
 import org.drools.guvnor.client.util.Format;
+import org.drools.guvnor.client.util.TabOpener;
 
 import com.google.gwt.core.client.GWT;
 import com.google.gwt.user.client.ui.Composite;
@@ -44,15 +45,13 @@
 
 public class SnapshotDiffView extends Composite {
 
-    private static Constants        constants = GWT.create( Constants.class );
-    private ExplorerViewCenterPanel centerPanel;
+    private static Constants constants = GWT.create( Constants.class );
 
-    private SimplePanel             layout    = new SimplePanel();
-    private String                  leftHeader;
-    private String                  rightHeader;
+    private SimplePanel      layout    = new SimplePanel();
+    private String           leftHeader;
+    private String           rightHeader;
 
-    public SnapshotDiffView(ExplorerViewCenterPanel center) {
-        this.centerPanel = center;
+    public SnapshotDiffView() {
         initWidget( layout );
     }
 
@@ -135,7 +134,8 @@
                                       int rowIndex,
                                       EventObject e) {
                 String uuid = grid.getSelectionModel().getSelected().getAsString( "uuid" ); //NON-NLS
-                centerPanel.openAsset( uuid );
+                TabOpener tabOpener = TabOpener.getInstance();
+                tabOpener.openAsset( uuid );
             }
         } );
 

Modified: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/packages/SnapshotView.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/packages/SnapshotView.java	2010-10-18 02:59:58 UTC (rev 35552)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/packages/SnapshotView.java	2010-10-18 08:36:50 UTC (rev 35553)
@@ -27,18 +27,14 @@
 import org.drools.guvnor.client.common.PrettyFormLayout;
 import org.drools.guvnor.client.common.RulePackageSelector;
 import org.drools.guvnor.client.explorer.ExplorerNodeConfig;
-import org.drools.guvnor.client.explorer.ExplorerViewCenterPanel;
 import org.drools.guvnor.client.messages.Constants;
 import org.drools.guvnor.client.rpc.PackageConfigData;
 import org.drools.guvnor.client.rpc.RepositoryServiceAsync;
 import org.drools.guvnor.client.rpc.RepositoryServiceFactory;
 import org.drools.guvnor.client.rpc.SnapshotDiffs;
 import org.drools.guvnor.client.rpc.SnapshotInfo;
-import org.drools.guvnor.client.ruleeditor.MultiViewRow;
-import org.drools.guvnor.client.rulelist.AssetItemGrid;
-import org.drools.guvnor.client.rulelist.AssetItemGridDataLoader;
-import org.drools.guvnor.client.rulelist.EditItemEvent;
 import org.drools.guvnor.client.util.Format;
+import org.drools.guvnor.client.util.TabOpener;
 
 import com.google.gwt.core.client.GWT;
 import com.google.gwt.event.logical.shared.SelectionEvent;
@@ -69,23 +65,21 @@
  */
 public class SnapshotView extends Composite {
 
-    public static final String      LATEST_SNAPSHOT = "LATEST";
+    public static final String     LATEST_SNAPSHOT = "LATEST";
 
-    private PackageConfigData       parentConf;
-    private SnapshotInfo            snapInfo;
+    private PackageConfigData      parentConf;
+    private SnapshotInfo           snapInfo;
 
-    private Command                 close;
+    private Command                close;
 
-    private final SnapshotDiffView  diffGrid;
-    private ListBox                 box             = new ListBox();
+    private final SnapshotDiffView diffGrid;
+    private ListBox                box             = new ListBox();
 
-    private ExplorerViewCenterPanel centerPanel;
-    private static Constants        constants       = ((Constants) GWT.create( Constants.class ));
+    private static Constants       constants       = ((Constants) GWT.create( Constants.class ));
 
     public SnapshotView(SnapshotInfo snapInfo,
                         PackageConfigData parentPackage,
-                        Command closeSnap,
-                        ExplorerViewCenterPanel center) {
+                        Command closeSnap) {
 
         VerticalPanel vert = new VerticalPanel();
         this.snapInfo = snapInfo;
@@ -96,13 +90,11 @@
         head.addHeader( "images/snapshot.png",
                         header() );
 
-        this.centerPanel = center;
-
         vert.add( head );
 
         vert.add( infoPanel() );
 
-        diffGrid = new SnapshotDiffView( center );
+        diffGrid = new SnapshotDiffView();
 
         vert.add( diffGrid );
 
@@ -273,46 +265,46 @@
                                                 options.add( existing );
                                                 vert.add( existing );
                                             }
-                                            
-                    						HorizontalPanel newNameHorizontalPanel = new HorizontalPanel();
+
+                                            HorizontalPanel newNameHorizontalPanel = new HorizontalPanel();
                                             final TextBox newNameTextBox = new TextBox();
-                                    		final String newNameText = constants.NEW() + ": ";
+                                            final String newNameText = constants.NEW() + ": ";
 
-                    						final RadioButton newNameRadioButton = new RadioButton( "snapshotNameGroup",
-                    								newNameText);
-                    						newNameHorizontalPanel.add(newNameRadioButton);
-                    						newNameTextBox.setEnabled(false);
-                    						newNameRadioButton.addClickListener(new ClickListener() {
-                    							public void onClick(Widget w) {
-                    								newNameTextBox.setEnabled(true);
-                    							}
-                    						});
+                                            final RadioButton newNameRadioButton = new RadioButton( "snapshotNameGroup",
+                                                                                                    newNameText );
+                                            newNameHorizontalPanel.add( newNameRadioButton );
+                                            newNameTextBox.setEnabled( false );
+                                            newNameRadioButton.addClickListener( new ClickListener() {
+                                                public void onClick(Widget w) {
+                                                    newNameTextBox.setEnabled( true );
+                                                }
+                                            } );
 
-                    						newNameHorizontalPanel.add(newNameTextBox);
-                    						options.add(newNameRadioButton);
-                    						vert.add(newNameHorizontalPanel);                    						
+                                            newNameHorizontalPanel.add( newNameTextBox );
+                                            options.add( newNameRadioButton );
+                                            vert.add( newNameHorizontalPanel );
 
-                                            copy.addAttribute(constants.ExistingSnapshots(),
+                                            copy.addAttribute( constants.ExistingSnapshots(),
                                                                vert );
 
                                             Button ok = new Button( constants.OK() );
-                                            copy.addAttribute( "", ok );
+                                            copy.addAttribute( "",
+                                                               ok );
                                             ok.addClickListener( new ClickListener() {
                                                 public void onClick(Widget w) {
-                                                	
-                                        			boolean oneButtonIsSelected = false;
-                                        			for ( RadioButton rb : options ) {
+
+                                                    boolean oneButtonIsSelected = false;
+                                                    for ( RadioButton rb : options ) {
                                                         if ( rb.isChecked() ) {
-                                                        	oneButtonIsSelected = true;
-                                                        	break;
+                                                            oneButtonIsSelected = true;
+                                                            break;
                                                         }
-                                        			}
-                                    				if (!oneButtonIsSelected) {
-                                    					Window.alert(constants.YouHaveToEnterOrChoseALabelNameForTheSnapshot());
-                                    					return;
-                                    				}
-                                    				
-                                    				
+                                                    }
+                                                    if ( !oneButtonIsSelected ) {
+                                                        Window.alert( constants.YouHaveToEnterOrChoseALabelNameForTheSnapshot() );
+                                                        return;
+                                                    }
+
                                                     if ( newNameRadioButton.isChecked() ) {
                                                         if ( checkUnique( snaps,
                                                                           newNameTextBox.getText() ) ) {
@@ -375,32 +367,31 @@
     }
 
     protected Widget packageTree() {
-    	Map<TreeItem, String> itemWidgets = new HashMap<TreeItem, String>();
-    	Tree root = new Tree();    	
-    	root.setAnimationEnabled(true);
+        Map<TreeItem, String> itemWidgets = new HashMap<TreeItem, String>();
+        Tree root = new Tree();
+        root.setAnimationEnabled( true );
 
-    	
         TreeItem pkg = ExplorerNodeConfig.getPackageItemStructure( parentConf.name,
                                                                    snapInfo.uuid,
-                                                                   itemWidgets);
+                                                                   itemWidgets );
         pkg.setUserObject( snapInfo );
-        root.addItem(pkg);
-        
-        ScrollPanel packagesTreeItemPanel = new ScrollPanel(root);
-        root.addSelectionHandler(new SelectionHandler<TreeItem>() {
-        	public void onSelection(SelectionEvent<TreeItem> event) {
+        root.addItem( pkg );
+
+        ScrollPanel packagesTreeItemPanel = new ScrollPanel( root );
+        root.addSelectionHandler( new SelectionHandler<TreeItem>() {
+            public void onSelection(SelectionEvent<TreeItem> event) {
                 Object uo = event.getSelectedItem().getUserObject();
                 if ( uo instanceof Object[] ) {
                     Object o = ((Object[]) uo)[0];
                     showAssetList( (String[]) o );
                 } else if ( uo instanceof SnapshotInfo ) {
                     SnapshotInfo s = (SnapshotInfo) uo;
-                    //todo - add snap notice to this..
-                    centerPanel.openPackageEditor( s.uuid,
-                                                   null );
-                }       	
-        	}
-        });
+                    TabOpener tabOpener = TabOpener.getInstance();
+                    tabOpener.openPackageEditor( s.uuid,
+                                                 null );
+                }
+            }
+        } );
 
         return packagesTreeItemPanel;
     }
@@ -412,40 +403,11 @@
             key = key + assetTypes[i];
         }
 
-        if ( !centerPanel.showIfOpen( key ) ) {
-            AssetItemGrid grid = new AssetItemGrid( new EditItemEvent() {
-                                                        public void open(String key) {
-                                                            //todo add snap notice to this...
-                                                            centerPanel.openAsset( key );
-                                                        }
-                                                        public void open(MultiViewRow[] rows) {
-                                                            for ( MultiViewRow row : rows ) {
-                                                                centerPanel.openAsset( row.uuid);
-                                                            }
-                                                        }
-                                                    },
-                                                    AssetItemGrid.RULE_LIST_TABLE_ID,
-                                                    new AssetItemGridDataLoader() {
-                                                        public void loadData(int startRow,
-                                                                             int numberOfRows,
-                                                                             GenericCallback cb) {
-                                                            RepositoryServiceFactory.getService().listAssets( snapInfo.uuid,
-                                                                                                              assetTypes,
-                                                                                                              startRow,
-                                                                                                              numberOfRows,
-                                                                                                              AssetItemGrid.RULE_LIST_TABLE_ID,
-                                                                                                              cb );
-                                                        }
-                                                    } );
-
-            VerticalPanel vp = new VerticalPanel();
-            vp.add( new HTML( "<i><small>" + constants.SnapshotListingFor() + this.snapInfo.name + "</small></i>" ) );
-            vp.add( grid );
-            centerPanel.addTab( constants.SnapshotItems(),
-                                vp,
-                                key );
-        }
-
+        TabOpener tabOpener = TabOpener.getInstance();
+        tabOpener.openSnapshotAssetList( snapInfo.name,
+                                         snapInfo.uuid,
+                                         assetTypes,
+                                         key );
     }
 
     public static void showNewSnapshot(final Command refreshCmd) {
@@ -464,7 +426,8 @@
             public void onClick(Widget w) {
                 pop.hide();
                 String pkg = sel.getSelectedPackage();
-                PackageBuilderWidget.showSnapshotDialog( pkg, refreshCmd);
+                PackageBuilderWidget.showSnapshotDialog( pkg,
+                                                         refreshCmd );
             }
         } );
 

Modified: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/ruleeditor/DiscussionWidget.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/ruleeditor/DiscussionWidget.java	2010-10-18 02:59:58 UTC (rev 35552)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/ruleeditor/DiscussionWidget.java	2010-10-18 08:36:50 UTC (rev 35553)
@@ -22,7 +22,6 @@
 
 import org.drools.guvnor.client.common.GenericCallback;
 import org.drools.guvnor.client.common.SmallLabel;
-import org.drools.guvnor.client.explorer.BrowseTree;
 import org.drools.guvnor.client.explorer.ExplorerLayoutManager;
 import org.drools.guvnor.client.messages.Constants;
 import org.drools.guvnor.client.rpc.DiscussionRecord;
@@ -33,6 +32,7 @@
 import org.drools.guvnor.client.rpc.ServerPushNotification;
 import org.drools.guvnor.client.security.Capabilities;
 import org.drools.guvnor.client.util.Format;
+import org.drools.guvnor.client.util.Util;
 
 import com.google.gwt.core.client.GWT;
 import com.google.gwt.event.dom.client.ClickEvent;
@@ -163,7 +163,7 @@
             } );
         }
 
-        String feedURL = GWT.getModuleBaseURL() + "feed/discussion?package=" + asset.metaData.packageName + "&assetName=" + URL.encode( asset.metaData.name ) + "&viewUrl=" + BrowseTree.getSelfURL();
+        String feedURL = GWT.getModuleBaseURL() + "feed/discussion?package=" + asset.metaData.packageName + "&assetName=" + URL.encode( asset.metaData.name ) + "&viewUrl=" + Util.getSelfURL();
         hp.add( new HTML( "<a href='" + feedURL + "' target='_blank'><img src='images/feed.png'/></a>" ) );
 
         newCommentLayout.add( hp );

Added: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/util/TabOpener.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/util/TabOpener.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/util/TabOpener.java	2010-10-18 08:36:50 UTC (rev 35553)
@@ -0,0 +1,638 @@
+/*
+ * 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.util;
+
+import java.util.Arrays;
+
+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.AssetFormats;
+import org.drools.guvnor.client.common.FormStylePopup;
+import org.drools.guvnor.client.common.GenericCallback;
+import org.drools.guvnor.client.common.LoadingPopup;
+import org.drools.guvnor.client.common.SmallLabel;
+import org.drools.guvnor.client.explorer.ExplorerViewCenterPanel;
+import org.drools.guvnor.client.messages.Constants;
+import org.drools.guvnor.client.packages.PackageEditor;
+import org.drools.guvnor.client.packages.SnapshotView;
+import org.drools.guvnor.client.packages.SuggestionCompletionCache;
+import org.drools.guvnor.client.qa.AnalysisView;
+import org.drools.guvnor.client.qa.ScenarioPackageView;
+import org.drools.guvnor.client.rpc.PackageConfigData;
+import org.drools.guvnor.client.rpc.PushClient;
+import org.drools.guvnor.client.rpc.PushResponse;
+import org.drools.guvnor.client.rpc.RepositoryServiceFactory;
+import org.drools.guvnor.client.rpc.RuleAsset;
+import org.drools.guvnor.client.rpc.ServerPushNotification;
+import org.drools.guvnor.client.rpc.SnapshotInfo;
+import org.drools.guvnor.client.rpc.TableDataResult;
+import org.drools.guvnor.client.ruleeditor.MultiViewEditor;
+import org.drools.guvnor.client.ruleeditor.MultiViewRow;
+import org.drools.guvnor.client.ruleeditor.RuleViewer;
+import org.drools.guvnor.client.rulelist.AssetItemGrid;
+import org.drools.guvnor.client.rulelist.AssetItemGridDataLoader;
+import org.drools.guvnor.client.rulelist.EditItemEvent;
+import org.drools.guvnor.client.rulelist.QueryWidget;
+
+import com.google.gwt.core.client.GWT;
+import com.google.gwt.user.client.Command;
+import com.google.gwt.user.client.History;
+import com.google.gwt.user.client.Timer;
+import com.google.gwt.user.client.ui.Frame;
+import com.google.gwt.user.client.ui.HTML;
+import com.google.gwt.user.client.ui.VerticalPanel;
+
+/**
+ * 
+ * @author rikkola
+ *
+ */
+public class TabOpener {
+
+    private Constants                     constants             = ((Constants) GWT.create( Constants.class ));
+
+    private static final String           REPOCONFIG            = "repoconfig";
+    private static final String           RULE_VERIFIER_MANAGER = "ruleVerifierManager";
+    private static final String           SECURITY_PERMISSIONS  = "securityPermissions";
+    private static final String           ERROR_LOG             = "errorLog";
+    private static final String           BAKMAN                = "bakman";
+    private static final String           STATEMAN              = "stateman";
+    private static final String           ARCHMAN               = "archman";
+    private static final String           CATMAN                = "catman";
+
+    private final ExplorerViewCenterPanel explorerViewCenterPanel;
+
+    private static TabOpener              instance;
+
+    private TabOpener(ExplorerViewCenterPanel explorerViewCenterPanel) {
+        this.explorerViewCenterPanel = explorerViewCenterPanel;
+    }
+
+    public static void initIstance(ExplorerViewCenterPanel centertabbedPanel) {
+        instance = new TabOpener( centertabbedPanel );
+    }
+
+    public static TabOpener getInstance() {
+        return instance;
+    }
+
+    /**
+     * 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
+
+        if ( !explorerViewCenterPanel.showIfOpen( uuid ) ) {
+
+            final boolean[] loading = {true};
+
+            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 );
+                                                                                                                                       }
+
+                                                                                                                                       public void open(MultiViewRow[] rows) {
+                                                                                                                                           for ( MultiViewRow row : rows ) {
+                                                                                                                                               openAsset( row.uuid );
+                                                                                                                                           }
+                                                                                                                                       }
+                                                                                                                                   };
+                                                                                                                                   RuleViewer rv = new RuleViewer( a,
+                                                                                                                                                                   edit );
+                                                                                                                                   explorerViewCenterPanel.addTab( a.metaData.name,
+                                                                                                                                                                   rv,
+                                                                                                                                                                   uuid );
+                                                                                                                                   rv.setCloseCommand( new Command() {
+                                                                                                                                       public void execute() {
+                                                                                                                                           explorerViewCenterPanel.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 = explorerViewCenterPanel.getOpenedPackageEditors().get( a.metaData.packageName );
+                                                                                                                                               if ( packageEditor != null ) {
+                                                                                                                                                   packageEditor.reload();
+                                                                                                                                               }
+                                                                                                                                           }
+                                                                                                                                       };
+                                                                                                                                       rv.setCheckedInCommand( command );
+                                                                                                                                       rv.setArchiveCommand( command );
+                                                                                                                                   }
+
+                                                                                                                                   LoadingPopup.close();
+                                                                                                                               }
+                                                                                                                           } );
+                                                                     }
+                                                                 } );
+        }
+    }
+
+    public void openAssetsToMultiView(MultiViewRow[] rows) {
+
+        String blockingAssetName = null;
+        final String[] uuids = new String[rows.length];
+        final String[] names = new String[rows.length];
+
+        for ( int i = 0; i < rows.length; i++ ) {
+            // Check if any of these assets are already opened.
+            if ( explorerViewCenterPanel.showIfOpen( rows[i].uuid ) ) {
+                blockingAssetName = rows[i].name;
+                break;
+            }
+            uuids[i] = rows[i].uuid;
+            names[i] = rows[i].name;
+        }
+
+        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 );
+                                                             }
+
+                                                             public void open(MultiViewRow[] rows) {
+                                                                 for ( MultiViewRow row : rows ) {
+                                                                     openAsset( row.uuid );
+                                                                 }
+                                                             }
+                                                         } );
+
+        multiview.setCloseCommand( new Command() {
+            public void execute() {
+                explorerViewCenterPanel.close( Arrays.toString( uuids ) );
+            }
+        } );
+
+        explorerViewCenterPanel.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) {
+
+        if ( !explorerViewCenterPanel.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() {
+                                                                                                                           explorerViewCenterPanel.close( uuid );
+                                                                                                                       }
+                                                                                                                   },
+                                                                                                                   refPackageList,
+                                                                                                                   new EditItemEvent() {
+                                                                                                                       public void open(String uuid) {
+                                                                                                                           openAsset( uuid );
+                                                                                                                       }
+
+                                                                                                                       public void open(MultiViewRow[] rows) {
+                                                                                                                           for ( MultiViewRow row : rows ) {
+                                                                                                                               openAsset( row.uuid );
+                                                                                                                           }
+                                                                                                                       }
+                                                                                                                   } );
+                                                                             explorerViewCenterPanel.addTab( conf.name,
+                                                                                                             ed,
+                                                                                                             conf.uuid );
+                                                                             LoadingPopup.close();
+                                                                         }
+                                                                     } );
+        }
+    }
+
+    public void openFind() {
+        if ( !explorerViewCenterPanel.showIfOpen( "FIND" ) ) { //NON-NLS
+            explorerViewCenterPanel.addTab( constants.Find(),
+                                            new QueryWidget( new EditItemEvent() {
+                                                public void open(String uuid) {
+                                                    openAsset( uuid );
+                                                }
+
+                                                public void open(MultiViewRow[] rows) {
+                                                    for ( MultiViewRow row : rows ) {
+                                                        openAsset( row.uuid );
+                                                    }
+                                                }
+                                            } ),
+                                            "FIND" ); //NON-NLS
+
+        }
+    }
+
+    public void openSnapshot(final SnapshotInfo snap) {
+        if ( !explorerViewCenterPanel.showIfOpen( snap.name + snap.uuid ) ) {
+            LoadingPopup.showMessage( constants.LoadingSnapshot() );
+            RepositoryServiceFactory.getService().loadPackageConfig( snap.uuid,
+                                                                     new GenericCallback<PackageConfigData>() {
+                                                                         public void onSuccess(PackageConfigData conf) {
+                                                                             explorerViewCenterPanel.addTab( Format.format( constants.SnapshotLabel(),
+                                                                                                                            snap.name ),
+                                                                                                             new SnapshotView( snap,
+                                                                                                                               conf,
+                                                                                                                               new Command() {
+                                                                                                                                   public void execute() {
+                                                                                                                                       explorerViewCenterPanel.close( snap.name + snap.uuid );
+                                                                                                                                   }
+                                                                                                                               } ),
+                                                                                                             snap.name + snap.uuid );
+                                                                             LoadingPopup.close();
+                                                                         }
+                                                                     } );
+
+        }
+    }
+
+    public void openAdministrationSelection(int id) {
+
+        switch ( id ) {
+            case 0 :
+                if ( !explorerViewCenterPanel.showIfOpen( CATMAN ) ) {
+                    explorerViewCenterPanel.addTab( constants.CategoryManager(),
+                                                    new CategoryManager(),
+                                                    CATMAN );
+                }
+                break;
+            case 1 :
+                if ( !explorerViewCenterPanel.showIfOpen( ARCHMAN ) ) {
+                    explorerViewCenterPanel.addTab( constants.ArchivedManager(),
+                                                    new ArchivedAssetManager(),
+                                                    ARCHMAN );
+                }
+                break;
+
+            case 2 :
+                if ( !explorerViewCenterPanel.showIfOpen( STATEMAN ) ) {
+                    explorerViewCenterPanel.addTab( constants.StateManager(),
+                                                    new StateManager(),
+                                                    STATEMAN );
+                }
+                break;
+            case 3 :
+                if ( !explorerViewCenterPanel.showIfOpen( BAKMAN ) ) {
+                    explorerViewCenterPanel.addTab( constants.ImportExport(),
+                                                    new BackupManager(),
+                                                    BAKMAN );
+                }
+                break;
+
+            case 4 :
+                if ( !explorerViewCenterPanel.showIfOpen( ERROR_LOG ) ) {
+                    explorerViewCenterPanel.addTab( constants.EventLog(),
+                                                    new LogViewer(),
+                                                    ERROR_LOG );
+                }
+                break;
+            case 5 :
+                if ( !explorerViewCenterPanel.showIfOpen( SECURITY_PERMISSIONS ) ) {
+                    explorerViewCenterPanel.addTab( constants.UserPermissionMappings(),
+                                                    new PermissionViewer(),
+                                                    SECURITY_PERMISSIONS );
+                }
+                break;
+            case 6 :
+                Frame aboutInfoFrame = new Frame( "../AboutInfo.html" ); //NON-NLS
+
+                FormStylePopup aboutPop = new FormStylePopup();
+                aboutPop.setWidth( 600 + "px" );
+                aboutPop.setTitle( constants.About() );
+                String hhurl = GWT.getModuleBaseURL() + "webdav";
+                aboutPop.addAttribute( constants.WebDAVURL() + ":",
+                                       new SmallLabel( "<b>" + hhurl + "</b>" ) );
+                aboutPop.addAttribute( constants.Version() + ":",
+                                       aboutInfoFrame );
+                aboutPop.show();
+                break;
+
+            case 7 :
+                if ( !explorerViewCenterPanel.showIfOpen( RULE_VERIFIER_MANAGER ) ) {
+                    explorerViewCenterPanel.addTab( constants.RulesVerificationManager(),
+                                                    new RuleVerifierManager(),
+                                                    RULE_VERIFIER_MANAGER );
+                }
+                break;
+            case 8 :
+                if ( !explorerViewCenterPanel.showIfOpen( REPOCONFIG ) ) //NON-NLS
+                explorerViewCenterPanel.addTab( constants.RepositoryConfig(),
+                                                new RepoConfigManager(),
+                                                REPOCONFIG );
+                break;
+        }
+
+    }
+
+    /**
+     * Show the inbox of the given name.
+     */
+    public void openInbox(String title,
+                          final String widgetID) {
+        if ( !explorerViewCenterPanel.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 );
+                                                     }
+                                                 } );
+            explorerViewCenterPanel.addTab( title,
+                                            g,
+                                            widgetID );
+        }
+    }
+
+    /**
+     * open a state or category !
+     */
+    public void openState(String title,
+                          String widgetID) {
+        if ( !explorerViewCenterPanel.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<TableDataResult> 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();
+                    }
+                }
+            };
+            PushClient.instance().subscribe( push );
+            list.addUnloadListener( new Command() {
+                public void execute() {
+                    PushClient.instance().unsubscribe( push );
+                }
+            } );
+
+            explorerViewCenterPanel.addTab( constants.Status() + title,
+                                            list,
+                                            widgetID );
+        }
+    }
+
+    /**
+     * open a category 
+     */
+    public void openCategory(String title,
+                             String widgetID) {
+        if ( !explorerViewCenterPanel.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<TableDataResult> cb) {
+                                                                  RepositoryServiceFactory.getService().loadRuleListForCategories( categoryName,
+                                                                                                                                   skip,
+                                                                                                                                   numberOfRows,
+                                                                                                                                   AssetItemGrid.RULE_LIST_TABLE_ID,
+                                                                                                                                   cb );
+                                                              }
+                                                          },
+                                                          GWT.getModuleBaseURL() + "feed/category?name=" + categoryName + "&viewUrl=" + Util.getSelfURL() );
+            final ServerPushNotification push = new ServerPushNotification() {
+                public void messageReceived(PushResponse response) {
+                    if ( response.messageType.equals( "categoryChange" ) && response.message.equals( categoryName ) ) {
+                        list.refreshGrid();
+                    }
+                }
+            };
+            PushClient.instance().subscribe( push );
+            list.addUnloadListener( new Command() {
+                public void execute() {
+                    PushClient.instance().unsubscribe( push );
+                }
+            } );
+
+            explorerViewCenterPanel.addTab( (constants.CategoryColon()) + title,
+                                            list,
+                                            widgetID );
+        }
+    }
+
+    private EditItemEvent createEditEvent() {
+        return new EditItemEvent() {
+            public void open(String uuid) {
+                openAsset( uuid );
+            }
+
+            public void open(MultiViewRow[] rows) {
+                for ( MultiViewRow row : rows ) {
+                    openAsset( row.uuid );
+                }
+            }
+        };
+    }
+
+    public void openPackageViewAssets(final String packageUuid,
+                                      final String packageName,
+                                      String key,
+                                      final String[] formats,
+                                      final String itemName) {
+        if ( !explorerViewCenterPanel.showIfOpen( key ) ) {
+
+            final AssetItemGrid list = new AssetItemGrid( new EditItemEvent() {
+                                                              public void open(String uuid) {
+                                                                  openAsset( uuid );
+                                                              }
+
+                                                              public void open(MultiViewRow[] rows) {
+                                                                  openAssetsToMultiView( rows );
+                                                              }
+                                                          },
+                                                          AssetItemGrid.PACKAGEVIEW_LIST_TABLE_ID,
+                                                          new AssetItemGridDataLoader() {
+                                                              public void loadData(int startRow,
+                                                                                   int numberOfRows,
+                                                                                   GenericCallback<TableDataResult> cb) {
+                                                                  RepositoryServiceFactory.getService().listAssets( packageUuid,
+                                                                                                                    formats,
+                                                                                                                    startRow,
+                                                                                                                    numberOfRows,
+                                                                                                                    AssetItemGrid.PACKAGEVIEW_LIST_TABLE_ID,
+                                                                                                                    cb );
+                                                              }
+                                                          },
+                                                          GWT.getModuleBaseURL() + "feed/package?name=" + packageName + "&viewUrl=" + Util.getSelfURL() + "&status=*" );
+            explorerViewCenterPanel.addTab( itemName + " [" + packageName + "]",
+                                            list,
+                                            key );
+
+            final ServerPushNotification sub = new ServerPushNotification() {
+                public void messageReceived(PushResponse response) {
+                    if ( response.messageType.equals( "packageChange" ) && response.message.equals( packageName ) ) {
+                        list.refreshGrid();
+                    }
+                }
+            };
+            PushClient.instance().subscribe( sub );
+            list.addUnloadListener( new Command() {
+                public void execute() {
+                    PushClient.instance().unsubscribe( sub );
+                }
+            } );
+        }
+    }
+
+    public void openTestScenario(String packageUuid,
+                                 String packageName) {
+
+        if ( !explorerViewCenterPanel.showIfOpen( "scenarios" + packageUuid ) ) {
+            final EditItemEvent edit = new EditItemEvent() {
+                public void open(String key) {
+                    openAsset( key );
+                }
+
+                public void open(MultiViewRow[] rows) {
+                    for ( MultiViewRow row : rows ) {
+                        openAsset( row.uuid );
+                    }
+                }
+            };
+
+            String m = Format.format( constants.ScenariosForPackage(),
+                                      packageName );
+            explorerViewCenterPanel.addTab( m,
+                                            new ScenarioPackageView( packageUuid,
+                                                                     packageName,
+                                                                     edit,
+                                                                     explorerViewCenterPanel ),
+                                            "scenarios" + packageUuid );
+        }
+    }
+
+    public void openVerifierView(String packageUuid,
+                                 String packageName) {
+        if ( !explorerViewCenterPanel.showIfOpen( "analysis" + packageUuid ) ) { //NON-NLS
+            final EditItemEvent edit = new EditItemEvent() {
+                public void open(String key) {
+                    openAsset( key );
+                }
+
+                public void open(MultiViewRow[] rows) {
+                    for ( MultiViewRow row : rows ) {
+                        openAsset( row.uuid );
+                    }
+                }
+            };
+
+            String m = Format.format( constants.AnalysisForPackage(),
+                                      packageName );
+            explorerViewCenterPanel.addTab( m,
+                                            new AnalysisView( packageUuid,
+                                                              packageName,
+                                                              edit ),
+                                            "analysis" + packageUuid );
+        }
+    }
+
+    public void openSnapshotAssetList(final String name,
+                                      final String uuid,
+                                      final String[] assetTypes,
+                                      String key) {
+        if ( !explorerViewCenterPanel.showIfOpen( key ) ) {
+            AssetItemGrid grid = new AssetItemGrid( new EditItemEvent() {
+                                                        public void open(String key) {
+                                                            openAsset( key );
+                                                        }
+
+                                                        public void open(MultiViewRow[] rows) {
+                                                            for ( MultiViewRow row : rows ) {
+                                                                openAsset( row.uuid );
+                                                            }
+                                                        }
+                                                    },
+                                                    AssetItemGrid.RULE_LIST_TABLE_ID,
+                                                    new AssetItemGridDataLoader() {
+                                                        public void loadData(int startRow,
+                                                                             int numberOfRows,
+                                                                             GenericCallback<TableDataResult> cb) {
+                                                            RepositoryServiceFactory.getService().listAssets( uuid,
+                                                                                                              assetTypes,
+                                                                                                              startRow,
+                                                                                                              numberOfRows,
+                                                                                                              AssetItemGrid.RULE_LIST_TABLE_ID,
+                                                                                                              cb );
+                                                        }
+                                                    } );
+
+            VerticalPanel vp = new VerticalPanel();
+            vp.add( new HTML( "<i><small>" + constants.SnapshotListingFor() + name + "</small></i>" ) );
+            vp.add( grid );
+            explorerViewCenterPanel.addTab( constants.SnapshotItems(),
+                                            vp,
+                                            key );
+        }
+    }
+
+}

Copied: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/util/Util.java (from rev 35525, 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/util/Util.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/util/Util.java	2010-10-18 08:36:50 UTC (rev 35553)
@@ -0,0 +1,72 @@
+/*
+ * 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.util;
+
+import org.drools.guvnor.client.common.HeaderHTML;
+
+import com.google.gwt.resources.client.ImageResource;
+import com.google.gwt.user.client.Window;
+import com.google.gwt.user.client.ui.AbstractImagePrototype;
+import com.google.gwt.user.client.ui.HTML;
+
+public class Util {
+
+    /**
+     * Get a string representation of the header that includes an image and some
+     * text.
+     * 
+     * @param image the {@link ImageResource} to add next to the header
+     * @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;
+    }
+
+    /**
+     * Get a string representation of the header that includes an image and some
+     * text.
+     * 
+     * @param image the {@link ImageResource} to add next to the header
+     * @param text the header text
+     * @return the header as a string
+     */
+    public static HTML getHeaderHTML(ImageResource image,
+                                     String text) {
+
+        HeaderHTML headerHTML = new HeaderHTML();
+
+        headerHTML.setText( text );
+        headerHTML.setImageResource( image );
+
+        return new HTML( headerHTML.getElement().getString() );
+    }
+
+    /**
+     * The URL that will be used to open up assets in a feed.
+     * (by tacking asset id on the end, of course !). 
+     */
+    public static String getSelfURL() {
+        String selfURL = Window.Location.getHref();
+        if ( selfURL.contains( "#" ) ) {
+            selfURL = selfURL.substring( 0,
+                                         selfURL.indexOf( "#" ) );
+        }
+        return selfURL;
+    }
+}
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/public/Guvnor.css
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/public/Guvnor.css	2010-10-18 02:59:58 UTC (rev 35552)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/public/Guvnor.css	2010-10-18 08:36:50 UTC (rev 35553)
@@ -534,11 +534,6 @@
 	border-color: #000 !important;
 }
 
-.gwt-MenuBar .gwt-MenuItem-selected,.modeller-fact-TypeHeader {
-	/* background:#f6f6f6; */
-	
-}
-
 input,.constraint-value-Editor {
 	border: 1px solid #aa9;
 	color: #666;

Modified: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/ServiceImplementation.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/ServiceImplementation.java	2010-10-18 02:59:58 UTC (rev 35552)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/ServiceImplementation.java	2010-10-18 08:36:50 UTC (rev 35553)
@@ -1,4 +1,4 @@
-/**
+/*
  * Copyright 2005 JBoss Inc
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -63,11 +63,8 @@
 import org.drools.compiler.DrlParser;
 import org.drools.compiler.DroolsParserException;
 import org.drools.core.util.DroolsStreamUtils;
-import org.drools.factconstraints.client.ConstraintConfiguration;
-import org.drools.factconstraints.server.factory.ConstraintsFactory;
 import org.drools.guvnor.client.common.AssetFormats;
 import org.drools.guvnor.client.explorer.ExplorerNodeConfig;
-import org.drools.guvnor.client.rpc.AnalysisReport;
 import org.drools.guvnor.client.rpc.BuilderResult;
 import org.drools.guvnor.client.rpc.BuilderResultLine;
 import org.drools.guvnor.client.rpc.BulkTestRunResult;
@@ -90,7 +87,6 @@
 import org.drools.guvnor.client.rpc.TableDataResult;
 import org.drools.guvnor.client.rpc.TableDataRow;
 import org.drools.guvnor.client.rpc.ValidatedResponse;
-import org.drools.guvnor.client.rpc.WorkingSetConfigData;
 import org.drools.guvnor.server.builder.AuditLogReporter;
 import org.drools.guvnor.server.builder.BRMSPackageBuilder;
 import org.drools.guvnor.server.builder.ContentAssemblyError;
@@ -116,7 +112,6 @@
 import org.drools.guvnor.server.util.LoggingHelper;
 import org.drools.guvnor.server.util.MetaDataMapper;
 import org.drools.guvnor.server.util.TableDisplayHandler;
-import org.drools.guvnor.server.util.VerifierRunner;
 import org.drools.ide.common.client.modeldriven.SuggestionCompletionEngine;
 import org.drools.ide.common.client.modeldriven.testing.Scenario;
 import org.drools.lang.descr.PackageDescr;
@@ -130,17 +125,16 @@
 import org.drools.repository.PackageIterator;
 import org.drools.repository.RepositoryFilter;
 import org.drools.repository.RulesRepository;
+import org.drools.repository.RulesRepository.DateQuery;
 import org.drools.repository.RulesRepositoryAdministrator;
 import org.drools.repository.RulesRepositoryException;
 import org.drools.repository.StateItem;
 import org.drools.repository.VersionableItem;
-import org.drools.repository.RulesRepository.DateQuery;
 import org.drools.repository.security.PermissionManager;
 import org.drools.rule.Package;
 import org.drools.runtime.rule.ConsequenceException;
 import org.drools.testframework.RuleCoverageListener;
 import org.drools.testframework.ScenarioRunner;
-import org.drools.verifier.VerifierConfiguration;
 import org.jboss.seam.annotations.AutoCreate;
 import org.jboss.seam.annotations.In;
 import org.jboss.seam.annotations.Name;



More information about the jboss-svn-commits mailing list