KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > directory > ldapstudio > schemas > controller > actions > OpenTypeHierarchyAction


1 /*
2  * Licensed to the Apache Software Foundation (ASF) under one
3  * or more contributor license agreements. See the NOTICE file
4  * distributed with this work for additional information
5  * regarding copyright ownership. The ASF licenses this file
6  * to you under the Apache License, Version 2.0 (the
7  * "License"); you may not use this file except in compliance
8  * with the License. You may obtain a copy of the License at
9  *
10  * http://www.apache.org/licenses/LICENSE-2.0
11  *
12  * Unless required by applicable law or agreed to in writing,
13  * software distributed under the License is distributed on an
14  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15  * KIND, either express or implied. See the License for the
16  * specific language governing permissions and limitations
17  * under the License.
18  *
19  */

20
21 package org.apache.directory.ldapstudio.schemas.controller.actions;
22
23
24 import org.apache.directory.ldapstudio.schemas.Messages;
25 import org.apache.directory.ldapstudio.schemas.PluginConstants;
26 import org.apache.directory.ldapstudio.schemas.model.SchemaElement;
27 import org.apache.directory.ldapstudio.schemas.model.SchemaPool;
28 import org.apache.directory.ldapstudio.schemas.view.editors.attributeType.AttributeTypeEditor;
29 import org.apache.directory.ldapstudio.schemas.view.editors.objectClass.ObjectClassEditor;
30 import org.apache.directory.ldapstudio.schemas.view.views.HierarchyView;
31 import org.apache.directory.ldapstudio.schemas.view.views.SchemaElementsView;
32 import org.apache.directory.ldapstudio.schemas.view.views.SchemasView;
33 import org.apache.directory.ldapstudio.schemas.view.views.wrappers.AttributeTypeWrapper;
34 import org.apache.directory.ldapstudio.schemas.view.views.wrappers.ObjectClassWrapper;
35 import org.eclipse.jface.action.Action;
36 import org.eclipse.jface.action.IAction;
37 import org.eclipse.jface.viewers.ISelection;
38 import org.eclipse.jface.viewers.StructuredSelection;
39 import org.eclipse.jface.viewers.TreeViewer;
40 import org.eclipse.ui.IWorkbenchPart;
41 import org.eclipse.ui.IWorkbenchWindow;
42 import org.eclipse.ui.IWorkbenchWindowActionDelegate;
43 import org.eclipse.ui.PlatformUI;
44
45
46 /**
47  * This action opens the Type Hierarchy View on the selected item.
48  *
49  * @author <a HREF="mailto:dev@directory.apache.org">Apache Directory Project</a>
50  * @version $Rev$, $Date$
51  */

52 public class OpenTypeHierarchyAction extends Action implements IWorkbenchWindowActionDelegate
53 {
54     /**
55      * Creates a new instance of OpenSchemasViewPreferencesAction.
56      */

57     public OpenTypeHierarchyAction()
58     {
59         super( Messages.getString( "OpenTypeHierarchyAction.Open_Type_Hierarchy" ) ); //$NON-NLS-1$
60
setToolTipText( getText() );
61         setId( PluginConstants.CMD_OPEN_TYPE_HIERARCHY );
62         setActionDefinitionId( PluginConstants.CMD_OPEN_TYPE_HIERARCHY );
63         setEnabled( true );
64     }
65
66
67     /* (non-Javadoc)
68      * @see org.eclipse.jface.action.Action#run()
69      */

70     public void run()
71     {
72         IWorkbenchPart part = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActivePart();
73
74         if ( part instanceof SchemasView )
75         {
76             openTypeHierarchyFromTreeViewer( ( ( SchemasView ) part ).getViewer() );
77         }
78         else if ( part instanceof SchemaElementsView )
79         {
80             openTypeHierarchyFromTreeViewer( ( ( SchemaElementsView ) part ).getViewer() );
81         }
82         else if ( part instanceof HierarchyView )
83         {
84             openTypeHierarchyFromTreeViewer( ( ( HierarchyView ) part ).getViewer() );
85         }
86         else if ( part instanceof AttributeTypeEditor )
87         {
88             openTypeHierarchy( SchemaPool.getInstance().getAttributeType( part.getTitle() ) );
89         }
90         else if ( part instanceof ObjectClassEditor )
91         {
92             openTypeHierarchy( SchemaPool.getInstance().getObjectClass( part.getTitle() ) );
93         }
94     }
95
96
97     /**
98      * Gets the selection of the TreeViewer and opens the selection in the Hierarchy View.
99      *
100      * @param treeViewer
101      * the Tree Viewer
102      */

103     private void openTypeHierarchyFromTreeViewer( TreeViewer treeViewer )
104     {
105         Object JavaDoc firstElement = ( ( StructuredSelection ) treeViewer.getSelection() ).getFirstElement();
106
107         if ( firstElement instanceof ObjectClassWrapper )
108         {
109             ObjectClassWrapper ocw = ( ObjectClassWrapper ) firstElement;
110             openTypeHierarchy( ocw.getMyObjectClass() );
111         }
112         else if ( firstElement instanceof AttributeTypeWrapper )
113         {
114             AttributeTypeWrapper atw = ( AttributeTypeWrapper ) firstElement;
115             openTypeHierarchy( atw.getMyAttributeType() );
116         }
117     }
118
119
120     /**
121      * Opens the Type Hierarchy with the given element.
122      *
123      * @param element
124      * the element to open
125      */

126     private void openTypeHierarchy( SchemaElement element )
127     {
128         HierarchyView view = ( HierarchyView ) PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage()
129             .findView( HierarchyView.ID );
130
131         view.setInput( element );
132         PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().bringToTop( view );
133     }
134
135
136     /* (non-Javadoc)
137      * @see org.eclipse.ui.IWorkbenchWindowActionDelegate#dispose()
138      */

139     public void dispose()
140     {
141     }
142
143
144     /* (non-Javadoc)
145      * @see org.eclipse.ui.IActionDelegate#run(org.eclipse.jface.action.IAction)
146      */

147     public void run( IAction action )
148     {
149     }
150
151
152     /* (non-Javadoc)
153      * @see org.eclipse.ui.IActionDelegate#selectionChanged(org.eclipse.jface.action.IAction, org.eclipse.jface.viewers.ISelection)
154      */

155     public void selectionChanged( IAction action, ISelection selection )
156     {
157     }
158
159
160     /* (non-Javadoc)
161      * @see org.eclipse.ui.IWorkbenchWindowActionDelegate#init(org.eclipse.ui.IWorkbenchWindow)
162      */

163     public void init( IWorkbenchWindow window )
164     {
165     }
166 }
167
Popular Tags