You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by se...@apache.org on 2007/09/02 14:01:29 UTC
svn commit: r571963 - in /directory/studio/tags/1.0.0: studio-connection-ui/
studio-connection-ui/src/main/java/org/apache/directory/studio/connection/ui/
studio-connection-ui/src/main/resources/ studio-ldapbrowser-common/
Author: seelmann
Date: Sun Sep 2 05:01:29 2007
New Revision: 571963
URL: http://svn.apache.org/viewvc?rev=571963&view=rev
Log:
Fixed DIRSTUDIO-180. Added dependency between connection pages.
Modified:
directory/studio/tags/1.0.0/studio-connection-ui/plugin.xml
directory/studio/tags/1.0.0/studio-connection-ui/src/main/java/org/apache/directory/studio/connection/ui/AbstractConnectionParameterPage.java
directory/studio/tags/1.0.0/studio-connection-ui/src/main/java/org/apache/directory/studio/connection/ui/ConnectionParameterPage.java
directory/studio/tags/1.0.0/studio-connection-ui/src/main/java/org/apache/directory/studio/connection/ui/ConnectionParameterPageManager.java
directory/studio/tags/1.0.0/studio-connection-ui/src/main/resources/connectionParameterPages.exsd
directory/studio/tags/1.0.0/studio-ldapbrowser-common/plugin.xml
Modified: directory/studio/tags/1.0.0/studio-connection-ui/plugin.xml
URL: http://svn.apache.org/viewvc/directory/studio/tags/1.0.0/studio-connection-ui/plugin.xml?rev=571963&r1=571962&r2=571963&view=diff
==============================================================================
--- directory/studio/tags/1.0.0/studio-connection-ui/plugin.xml (original)
+++ directory/studio/tags/1.0.0/studio-connection-ui/plugin.xml Sun Sep 2 05:01:29 2007
@@ -28,11 +28,15 @@
point="org.apache.directory.studio.connectionparameterpages">
<connectionParameterPage
class="org.apache.directory.studio.connection.ui.widgets.NetworkParameterPage"
+ dependsOnId="org.apache.directory.studio.connection.ui.widgets.NetworkParameterPage"
description="Please enter connection name and network parameters."
+ id="org.apache.directory.studio.connection.ui.widgets.NetworkParameterPage"
name="Network Parameter"/>
<connectionParameterPage
class="org.apache.directory.studio.connection.ui.widgets.AuthenticationParameterPage"
+ dependsOnId="org.apache.directory.studio.connection.ui.widgets.NetworkParameterPage"
description="Please select an authentification method and input authentification data."
+ id="org.apache.directory.studio.connection.ui.widgets.AuthenticationParameterPage"
name="Authentication"/>
</extension>
</plugin>
Modified: directory/studio/tags/1.0.0/studio-connection-ui/src/main/java/org/apache/directory/studio/connection/ui/AbstractConnectionParameterPage.java
URL: http://svn.apache.org/viewvc/directory/studio/tags/1.0.0/studio-connection-ui/src/main/java/org/apache/directory/studio/connection/ui/AbstractConnectionParameterPage.java?rev=571963&r1=571962&r2=571963&view=diff
==============================================================================
--- directory/studio/tags/1.0.0/studio-connection-ui/src/main/java/org/apache/directory/studio/connection/ui/AbstractConnectionParameterPage.java (original)
+++ directory/studio/tags/1.0.0/studio-connection-ui/src/main/java/org/apache/directory/studio/connection/ui/AbstractConnectionParameterPage.java Sun Sep 2 05:01:29 2007
@@ -33,12 +33,18 @@
public abstract class AbstractConnectionParameterPage implements ConnectionParameterPage
{
+ /** The page id. */
+ protected String pageId;
+
/** The page name. */
protected String pageName;
-
+
/** The page description. */
protected String pageDescription;
+ /** The page id this page depends on. */
+ protected String pageDependsOnId;
+
/** The runnable context. */
protected IRunnableContext runnableContext;
@@ -94,6 +100,24 @@
/**
+ * @see org.apache.directory.studio.connection.ui.ConnectionParameterPage#getPageId()
+ */
+ public String getPageId()
+ {
+ return pageId;
+ }
+
+
+ /**
+ * @see org.apache.directory.studio.connection.ui.ConnectionParameterPage#setPageId(java.lang.String)
+ */
+ public void setPageId( String pageId )
+ {
+ this.pageId = pageId;
+ }
+
+
+ /**
* @see org.apache.directory.studio.connection.ui.ConnectionParameterPage#getPageName()
*/
public String getPageName()
@@ -126,6 +150,24 @@
public void setPageDescription( String pageDescription )
{
this.pageDescription = pageDescription;
+ }
+
+
+ /**
+ * @see org.apache.directory.studio.connection.ui.ConnectionParameterPage#getPageDependsOnId()
+ */
+ public String getPageDependsOnId()
+ {
+ return pageDependsOnId;
+ }
+
+
+ /**
+ * @see org.apache.directory.studio.connection.ui.ConnectionParameterPage#setPageDependsOnId(java.lang.String)
+ */
+ public void setPageDependsOnId( String pageDependsOnId )
+ {
+ this.pageDependsOnId = pageDependsOnId;
}
Modified: directory/studio/tags/1.0.0/studio-connection-ui/src/main/java/org/apache/directory/studio/connection/ui/ConnectionParameterPage.java
URL: http://svn.apache.org/viewvc/directory/studio/tags/1.0.0/studio-connection-ui/src/main/java/org/apache/directory/studio/connection/ui/ConnectionParameterPage.java?rev=571963&r1=571962&r2=571963&view=diff
==============================================================================
--- directory/studio/tags/1.0.0/studio-connection-ui/src/main/java/org/apache/directory/studio/connection/ui/ConnectionParameterPage.java (original)
+++ directory/studio/tags/1.0.0/studio-connection-ui/src/main/java/org/apache/directory/studio/connection/ui/ConnectionParameterPage.java Sun Sep 2 05:01:29 2007
@@ -110,13 +110,29 @@
/**
+ * Sets the page id.
+ *
+ * @param pageId the page id
+ */
+ public void setPageId( String pageId );
+
+
+ /**
+ * Gets the page id.
+ *
+ * @return the page id
+ */
+ public String getPageId();
+
+
+ /**
* Sets the page name.
*
* @param pageName the page name
*/
public void setPageName( String pageName );
-
-
+
+
/**
* Gets the page name.
*
@@ -141,6 +157,22 @@
public String getPageDescription();
+ /**
+ * Sets the page id this page depends on.
+ *
+ * @param pageDependsOnId the page id this page depends on
+ */
+ public void setPageDependsOnId( String pageDependsOnId );
+
+
+ /**
+ * Gets the page id this page depends on.
+ *
+ * @return the page id this page depends on
+ */
+ public String getPageDependsOnId();
+
+
/**
* Sets the focus.
*/
Modified: directory/studio/tags/1.0.0/studio-connection-ui/src/main/java/org/apache/directory/studio/connection/ui/ConnectionParameterPageManager.java
URL: http://svn.apache.org/viewvc/directory/studio/tags/1.0.0/studio-connection-ui/src/main/java/org/apache/directory/studio/connection/ui/ConnectionParameterPageManager.java?rev=571963&r1=571962&r2=571963&view=diff
==============================================================================
--- directory/studio/tags/1.0.0/studio-connection-ui/src/main/java/org/apache/directory/studio/connection/ui/ConnectionParameterPageManager.java (original)
+++ directory/studio/tags/1.0.0/studio-connection-ui/src/main/java/org/apache/directory/studio/connection/ui/ConnectionParameterPageManager.java Sun Sep 2 05:01:29 2007
@@ -22,7 +22,11 @@
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.Collection;
+import java.util.Comparator;
+import java.util.HashMap;
+import java.util.Map;
import org.eclipse.core.runtime.IConfigurationElement;
import org.eclipse.core.runtime.IExtensionPoint;
@@ -53,18 +57,20 @@
IExtensionPoint extensionPoint = registry
.getExtensionPoint( "org.apache.directory.studio.connectionparameterpages" );
IConfigurationElement[] members = extensionPoint.getConfigurationElements();
- Collection<ConnectionParameterPage> pageCollection = new ArrayList<ConnectionParameterPage>();
+ final Map<String, ConnectionParameterPage> pageMap = new HashMap<String, ConnectionParameterPage>();
- // For each extension:
+ // For each extension: instantiate the page
for ( int m = 0; m < members.length; m++ )
{
IConfigurationElement member = members[m];
try
{
ConnectionParameterPage page = ( ConnectionParameterPage ) member.createExecutableExtension( "class" );
+ page.setPageId( member.getAttribute( "id" ) );
page.setPageName( member.getAttribute( "name" ) );
page.setPageDescription( member.getAttribute( "description" ) );
- pageCollection.add( page );
+ page.setPageDependsOnId( member.getAttribute( "dependsOnId" ) );
+ pageMap.put( page.getPageId(), page );
}
catch ( Exception e )
{
@@ -74,7 +80,82 @@
}
}
- ConnectionParameterPage[] pages = pageCollection.toArray( new ConnectionParameterPage[0] );
+ final ConnectionParameterPage[] pages = pageMap.values().toArray( new ConnectionParameterPage[0] );
+ Comparator<? super ConnectionParameterPage> pageComparator = new Comparator<ConnectionParameterPage>()
+ {
+ public int compare( ConnectionParameterPage p1, ConnectionParameterPage p2 )
+ {
+ String dependsOnId1 = p1.getPageDependsOnId();
+ String dependsOnId2 = p2.getPageDependsOnId();
+ do
+ {
+ if(dependsOnId1 == null && dependsOnId2 != null )
+ {
+ return -1;
+ }
+ else if(dependsOnId2 == null && dependsOnId1 != null )
+ {
+ return 1;
+ }
+ else if(dependsOnId1 != null && dependsOnId1.equals( p2.getPageId() ))
+ {
+ return 1;
+ }
+ else if(dependsOnId2 != null && dependsOnId2.equals( p1.getPageId() ))
+ {
+ return -1;
+ }
+
+ ConnectionParameterPage page = pageMap.get( dependsOnId1 );
+ if(page != null)
+ {
+ dependsOnId1 = page.getPageDependsOnId();
+ }
+ else
+ {
+ dependsOnId1 = null;
+ }
+ }
+ while(dependsOnId1 != null && !dependsOnId1.equals( p1.getPageId() ));
+
+ dependsOnId1 = p1.getPageDependsOnId();
+ dependsOnId2 = p2.getPageDependsOnId();
+ do
+ {
+ if(dependsOnId1 == null && dependsOnId2 != null )
+ {
+ return -1;
+ }
+ else if(dependsOnId2 == null && dependsOnId1 != null )
+ {
+ return 1;
+ }
+ else if(dependsOnId1 != null && dependsOnId1.equals( p2.getPageId() ))
+ {
+ return 1;
+ }
+ else if(dependsOnId2 != null && dependsOnId2.equals( p1.getPageId() ))
+ {
+ return -1;
+ }
+
+ ConnectionParameterPage page = pageMap.get( dependsOnId2 );
+ if(page != null)
+ {
+ dependsOnId2 = page.getPageDependsOnId();
+ }
+ else
+ {
+ dependsOnId2 = null;
+ }
+ }
+ while(dependsOnId2 != null && !dependsOnId2.equals( p2.getPageId() ));
+
+ return 0;
+ }
+ };
+ Arrays.sort( pages, pageComparator );
+
return pages;
}
}
Modified: directory/studio/tags/1.0.0/studio-connection-ui/src/main/resources/connectionParameterPages.exsd
URL: http://svn.apache.org/viewvc/directory/studio/tags/1.0.0/studio-connection-ui/src/main/resources/connectionParameterPages.exsd?rev=571963&r1=571962&r2=571963&view=diff
==============================================================================
--- directory/studio/tags/1.0.0/studio-connection-ui/src/main/resources/connectionParameterPages.exsd (original)
+++ directory/studio/tags/1.0.0/studio-connection-ui/src/main/resources/connectionParameterPages.exsd Sun Sep 2 05:01:29 2007
@@ -46,6 +46,13 @@
</appInfo>
</annotation>
<complexType>
+ <attribute name="id" type="string" use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
<attribute name="name" type="string" use="required">
<annotation>
<documentation>
@@ -74,6 +81,13 @@
<appInfo>
<meta.attribute kind="java" basedOn="org.apache.directory.studio.connection.ui.IConnectionParameterPage"/>
</appInfo>
+ </annotation>
+ </attribute>
+ <attribute name="dependsOnId" type="string">
+ <annotation>
+ <documentation>
+
+ </documentation>
</annotation>
</attribute>
</complexType>
Modified: directory/studio/tags/1.0.0/studio-ldapbrowser-common/plugin.xml
URL: http://svn.apache.org/viewvc/directory/studio/tags/1.0.0/studio-ldapbrowser-common/plugin.xml?rev=571963&r1=571962&r2=571963&view=diff
==============================================================================
--- directory/studio/tags/1.0.0/studio-ldapbrowser-common/plugin.xml (original)
+++ directory/studio/tags/1.0.0/studio-ldapbrowser-common/plugin.xml Sun Sep 2 05:01:29 2007
@@ -281,7 +281,9 @@
point="org.apache.directory.studio.connectionparameterpages">
<connectionParameterPage
class="org.apache.directory.studio.ldapbrowser.common.widgets.connection.BrowserParameterPage"
+ dependsOnId="org.apache.directory.studio.connection.ui.widgets.AuthenticationParameterPage"
description="You can specify additional connection parameters."
+ id="org.apache.directory.studio.ldapbrowser.common.widgets.connection.BrowserParameterPage"
name="Browser Options"/>
</extension>