You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by pa...@apache.org on 2007/07/17 11:18:01 UTC
svn commit: r556858 - in
/directory/studio/trunk/studio-apacheds-schemaeditor/src/main/java/org/apache/directory/studio/apacheds/schemaeditor:
controller/ model/ view/views/ view/wrappers/
Author: pamarcelot
Date: Tue Jul 17 02:17:59 2007
New Revision: 556858
URL: http://svn.apache.org/viewvc?view=rev&rev=556858
Log:
Improved events handling in the ProjectsView.
Modified:
directory/studio/trunk/studio-apacheds-schemaeditor/src/main/java/org/apache/directory/studio/apacheds/schemaeditor/controller/ProjectsViewController.java
directory/studio/trunk/studio-apacheds-schemaeditor/src/main/java/org/apache/directory/studio/apacheds/schemaeditor/model/Project.java
directory/studio/trunk/studio-apacheds-schemaeditor/src/main/java/org/apache/directory/studio/apacheds/schemaeditor/view/views/ProjectsViewContentProvider.java
directory/studio/trunk/studio-apacheds-schemaeditor/src/main/java/org/apache/directory/studio/apacheds/schemaeditor/view/wrappers/AbstractTreeNode.java
directory/studio/trunk/studio-apacheds-schemaeditor/src/main/java/org/apache/directory/studio/apacheds/schemaeditor/view/wrappers/ProjectWrapper.java
directory/studio/trunk/studio-apacheds-schemaeditor/src/main/java/org/apache/directory/studio/apacheds/schemaeditor/view/wrappers/ProjectsViewRoot.java
Modified: directory/studio/trunk/studio-apacheds-schemaeditor/src/main/java/org/apache/directory/studio/apacheds/schemaeditor/controller/ProjectsViewController.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/studio-apacheds-schemaeditor/src/main/java/org/apache/directory/studio/apacheds/schemaeditor/controller/ProjectsViewController.java?view=diff&rev=556858&r1=556857&r2=556858
==============================================================================
--- directory/studio/trunk/studio-apacheds-schemaeditor/src/main/java/org/apache/directory/studio/apacheds/schemaeditor/controller/ProjectsViewController.java (original)
+++ directory/studio/trunk/studio-apacheds-schemaeditor/src/main/java/org/apache/directory/studio/apacheds/schemaeditor/controller/ProjectsViewController.java Tue Jul 17 02:17:59 2007
@@ -32,6 +32,7 @@
import org.apache.directory.studio.apacheds.schemaeditor.model.Project.ProjectState;
import org.apache.directory.studio.apacheds.schemaeditor.view.views.ProjectsView;
import org.apache.directory.studio.apacheds.schemaeditor.view.wrappers.ProjectWrapper;
+import org.apache.directory.studio.apacheds.schemaeditor.view.wrappers.ProjectsViewRoot;
import org.eclipse.jface.action.Action;
import org.eclipse.jface.action.IMenuListener;
import org.eclipse.jface.action.IMenuManager;
@@ -44,7 +45,6 @@
import org.eclipse.jface.viewers.TableViewer;
import org.eclipse.swt.events.KeyAdapter;
import org.eclipse.swt.events.KeyEvent;
-import org.eclipse.swt.widgets.Display;
import org.eclipse.ui.IWorkbenchActionConstants;
@@ -59,6 +59,9 @@
/** The associated view */
private ProjectsView view;
+ /** The TableViewer */
+ private TableViewer viewer;
+
/** The Context Menu */
private MenuManager contextMenu;
@@ -84,6 +87,7 @@
public ProjectsViewController( ProjectsView view )
{
this.view = view;
+ viewer = view.getViewer();
projectsHandler = Activator.getDefault().getProjectsHandler();
@@ -151,8 +155,6 @@
}
} );
- TableViewer viewer = view.getViewer();
-
// set the context menu to the table viewer
viewer.getControl().setMenu( contextMenu.createContextMenu( viewer.getControl() ) );
@@ -166,8 +168,8 @@
*/
private void initViewer()
{
- view.getViewer().setInput( projectsHandler.getProjects() );
- view.getViewer().getTable().addKeyListener( new KeyAdapter()
+ viewer.setInput( new ProjectsViewRoot( viewer ) );
+ viewer.getTable().addKeyListener( new KeyAdapter()
{
public void keyReleased( KeyEvent e )
{
@@ -178,40 +180,6 @@
}
}
} );
- projectsHandler.addListener( new ProjectsHandlerListener()
- {
- public void projectAdded( Project project )
- {
- refreshProjectsViewer();
- }
-
-
- public void projectRemoved( Project project )
- {
- refreshProjectsViewer();
- }
-
-
- public void openProjectChanged( Project oldProject, Project newProject )
- {
- refreshProjectsViewer();
- }
- } );
- }
-
-
- /**
- * Refreshes the Projects Viewer
- */
- public void refreshProjectsViewer()
- {
- Display.getDefault().asyncExec( new Runnable()
- {
- public void run()
- {
- view.getViewer().refresh();
- }
- } );
}
@@ -220,11 +188,11 @@
*/
private void initDoubleClickListener()
{
- view.getViewer().addDoubleClickListener( new IDoubleClickListener()
+ viewer.addDoubleClickListener( new IDoubleClickListener()
{
public void doubleClick( DoubleClickEvent event )
{
- StructuredSelection selection = ( StructuredSelection ) view.getViewer().getSelection();
+ StructuredSelection selection = ( StructuredSelection ) viewer.getSelection();
if ( ( !selection.isEmpty() ) && ( selection.size() == 1 ) )
{
Modified: directory/studio/trunk/studio-apacheds-schemaeditor/src/main/java/org/apache/directory/studio/apacheds/schemaeditor/model/Project.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/studio-apacheds-schemaeditor/src/main/java/org/apache/directory/studio/apacheds/schemaeditor/model/Project.java?view=diff&rev=556858&r1=556857&r2=556858
==============================================================================
--- directory/studio/trunk/studio-apacheds-schemaeditor/src/main/java/org/apache/directory/studio/apacheds/schemaeditor/model/Project.java (original)
+++ directory/studio/trunk/studio-apacheds-schemaeditor/src/main/java/org/apache/directory/studio/apacheds/schemaeditor/model/Project.java Tue Jul 17 02:17:59 2007
@@ -176,4 +176,33 @@
{
this.state = state;
}
+
+
+ /* (non-Javadoc)
+ * @see java.lang.Object#equals(java.lang.Object)
+ */
+ public boolean equals( Object obj )
+ {
+ if ( obj instanceof Project )
+ {
+ Project project = ( Project ) obj;
+ if ( !getName().equals( project.getName() ) )
+ {
+ return false;
+ }
+ else if ( !getType().equals( project.getType() ) )
+ {
+ return false;
+ }
+ else if ( !getState().equals( project.getState() ) )
+ {
+ return false;
+ }
+
+ return true;
+ }
+
+ // Default
+ return super.equals( obj );
+ }
}
Modified: directory/studio/trunk/studio-apacheds-schemaeditor/src/main/java/org/apache/directory/studio/apacheds/schemaeditor/view/views/ProjectsViewContentProvider.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/studio-apacheds-schemaeditor/src/main/java/org/apache/directory/studio/apacheds/schemaeditor/view/views/ProjectsViewContentProvider.java?view=diff&rev=556858&r1=556857&r2=556858
==============================================================================
--- directory/studio/trunk/studio-apacheds-schemaeditor/src/main/java/org/apache/directory/studio/apacheds/schemaeditor/view/views/ProjectsViewContentProvider.java (original)
+++ directory/studio/trunk/studio-apacheds-schemaeditor/src/main/java/org/apache/directory/studio/apacheds/schemaeditor/view/views/ProjectsViewContentProvider.java Tue Jul 17 02:17:59 2007
@@ -20,11 +20,14 @@
package org.apache.directory.studio.apacheds.schemaeditor.view.views;
-import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
import java.util.List;
+import org.apache.directory.studio.apacheds.schemaeditor.Activator;
import org.apache.directory.studio.apacheds.schemaeditor.model.Project;
import org.apache.directory.studio.apacheds.schemaeditor.view.wrappers.ProjectWrapper;
+import org.apache.directory.studio.apacheds.schemaeditor.view.wrappers.ProjectsViewRoot;
import org.apache.directory.studio.apacheds.schemaeditor.view.wrappers.TreeNode;
import org.eclipse.jface.viewers.IStructuredContentProvider;
import org.eclipse.jface.viewers.ITreeContentProvider;
@@ -91,16 +94,37 @@
{
List<TreeNode> children = null;
- if ( parentElement instanceof List )
+ if ( parentElement instanceof ProjectsViewRoot )
{
- List<Project> projects = ( List<Project> ) parentElement;
+ ProjectsViewRoot projectsViewRoot = ( ProjectsViewRoot ) parentElement;
- children = new ArrayList<TreeNode>();
-
- for ( Project project : projects )
+ if ( !projectsViewRoot.hasChildren() )
{
- children.add( new ProjectWrapper( project, tableViewer ) );
+ for ( Project project : Activator.getDefault().getProjectsHandler().getProjects() )
+ {
+ projectsViewRoot.addChild( new ProjectWrapper( project, tableViewer ) );
+ }
}
+
+ children = projectsViewRoot.getChildren();
+
+ // Sorting Children
+ Collections.sort( children, new Comparator<TreeNode>()
+ {
+ public int compare( TreeNode tn1, TreeNode tn2 )
+ {
+ if ( ( tn1 instanceof ProjectWrapper ) && ( tn2 instanceof ProjectWrapper ) )
+ {
+ ProjectWrapper pw1 = ( ProjectWrapper ) tn1;
+ ProjectWrapper pw2 = ( ProjectWrapper ) tn2;
+
+ return pw1.getProject().getName().compareToIgnoreCase( pw2.getProject().getName() );
+ }
+
+ // Default
+ return 0;
+ }
+ } );
}
else if ( parentElement instanceof ProjectWrapper )
{
Modified: directory/studio/trunk/studio-apacheds-schemaeditor/src/main/java/org/apache/directory/studio/apacheds/schemaeditor/view/wrappers/AbstractTreeNode.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/studio-apacheds-schemaeditor/src/main/java/org/apache/directory/studio/apacheds/schemaeditor/view/wrappers/AbstractTreeNode.java?view=diff&rev=556858&r1=556857&r2=556858
==============================================================================
--- directory/studio/trunk/studio-apacheds-schemaeditor/src/main/java/org/apache/directory/studio/apacheds/schemaeditor/view/wrappers/AbstractTreeNode.java (original)
+++ directory/studio/trunk/studio-apacheds-schemaeditor/src/main/java/org/apache/directory/studio/apacheds/schemaeditor/view/wrappers/AbstractTreeNode.java Tue Jul 17 02:17:59 2007
@@ -59,7 +59,7 @@
{
if ( fChildren == null )
{
- return true;
+ return false;
}
return !fChildren.isEmpty();
Modified: directory/studio/trunk/studio-apacheds-schemaeditor/src/main/java/org/apache/directory/studio/apacheds/schemaeditor/view/wrappers/ProjectWrapper.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/studio-apacheds-schemaeditor/src/main/java/org/apache/directory/studio/apacheds/schemaeditor/view/wrappers/ProjectWrapper.java?view=diff&rev=556858&r1=556857&r2=556858
==============================================================================
--- directory/studio/trunk/studio-apacheds-schemaeditor/src/main/java/org/apache/directory/studio/apacheds/schemaeditor/view/wrappers/ProjectWrapper.java (original)
+++ directory/studio/trunk/studio-apacheds-schemaeditor/src/main/java/org/apache/directory/studio/apacheds/schemaeditor/view/wrappers/ProjectWrapper.java Tue Jul 17 02:17:59 2007
@@ -82,4 +82,18 @@
{
return false;
}
+
+
+ /* (non-Javadoc)
+ * @see java.lang.Object#equals(java.lang.Object)
+ */
+ public boolean equals( Object obj )
+ {
+ if ( obj instanceof ProjectWrapper )
+ {
+ return getProject().equals( ( ( ProjectWrapper ) obj ).getProject() );
+ }
+
+ return super.equals( obj );
+ }
}
Modified: directory/studio/trunk/studio-apacheds-schemaeditor/src/main/java/org/apache/directory/studio/apacheds/schemaeditor/view/wrappers/ProjectsViewRoot.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/studio-apacheds-schemaeditor/src/main/java/org/apache/directory/studio/apacheds/schemaeditor/view/wrappers/ProjectsViewRoot.java?view=diff&rev=556858&r1=556857&r2=556858
==============================================================================
--- directory/studio/trunk/studio-apacheds-schemaeditor/src/main/java/org/apache/directory/studio/apacheds/schemaeditor/view/wrappers/ProjectsViewRoot.java (original)
+++ directory/studio/trunk/studio-apacheds-schemaeditor/src/main/java/org/apache/directory/studio/apacheds/schemaeditor/view/wrappers/ProjectsViewRoot.java Tue Jul 17 02:17:59 2007
@@ -20,6 +20,14 @@
package org.apache.directory.studio.apacheds.schemaeditor.view.wrappers;
+import org.apache.directory.studio.apacheds.schemaeditor.Activator;
+import org.apache.directory.studio.apacheds.schemaeditor.controller.ProjectsHandler;
+import org.apache.directory.studio.apacheds.schemaeditor.controller.ProjectsHandlerListener;
+import org.apache.directory.studio.apacheds.schemaeditor.model.Project;
+import org.eclipse.jface.viewers.TableViewer;
+import org.eclipse.swt.widgets.Display;
+
+
/**
* This wrapper is used as root in the ProjectsView.
*
@@ -28,11 +36,92 @@
*/
public class ProjectsViewRoot extends AbstractTreeNode
{
+ /** The TableViewer */
+ private TableViewer viewer;
+
+ /** The ProjectsHandler */
+ private ProjectsHandler projectsHandler;
+
+
/**
* Creates a new instance of ProjectsViewRoot.
+ *
+ * @param tableViewer
+ * the associated TableViewer
*/
- public ProjectsViewRoot()
+ public ProjectsViewRoot( TableViewer tableViewer )
{
super( null );
+ this.viewer = tableViewer;
+
+ projectsHandler = Activator.getDefault().getProjectsHandler();
+ projectsHandler.addListener( new ProjectsHandlerListener()
+ {
+ public void projectAdded( Project project )
+ {
+ addProjectWrapper( project );
+ refreshProjectsViewer();
+ }
+
+
+ public void projectRemoved( Project project )
+ {
+ deleteProjectWrapper( project );
+ refreshProjectsViewer();
+ }
+
+
+ public void openProjectChanged( Project oldProject, Project newProject )
+ {
+ refreshProjectsViewer();
+ }
+ } );
+ }
+
+
+ /**
+ * Add a ProjectWrapper for the given project.
+ *
+ * @param project
+ * the project
+ */
+ private void addProjectWrapper( Project project )
+ {
+ addChild( new ProjectWrapper( project, viewer ) );
+ }
+
+
+ /**
+ * Deletes the ProjectWrapper associated with the given project.
+ *
+ * @param project
+ * the project
+ */
+ private void deleteProjectWrapper( Project project )
+ {
+ for ( TreeNode node : getChildren() )
+ {
+ ProjectWrapper pw = ( ProjectWrapper ) node;
+ if ( project == pw.getProject() )
+ {
+ removeChild( node );
+ return;
+ }
+ }
+ }
+
+
+ /**
+ * Refreshes the Projects Viewer
+ */
+ public void refreshProjectsViewer()
+ {
+ Display.getDefault().asyncExec( new Runnable()
+ {
+ public void run()
+ {
+ viewer.refresh();
+ }
+ } );
}
}