KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > directory > ldapstudio > browser > ui > views > connection > ConnectionViewUniversalListener


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.browser.ui.views.connection;
22
23
24 import org.apache.directory.ldapstudio.browser.common.actions.SelectionUtils;
25 import org.apache.directory.ldapstudio.browser.common.widgets.connection.ConnectionUniversalListener;
26 import org.apache.directory.ldapstudio.browser.core.jobs.OpenConnectionsJob;
27 import org.apache.directory.ldapstudio.browser.core.model.IConnection;
28 import org.apache.directory.ldapstudio.browser.ui.views.browser.BrowserView;
29 import org.apache.directory.ldapstudio.browser.ui.views.modificationlogs.ModificationLogsView;
30 import org.eclipse.jface.viewers.DoubleClickEvent;
31 import org.eclipse.jface.viewers.IDoubleClickListener;
32 import org.eclipse.jface.viewers.ISelectionChangedListener;
33 import org.eclipse.jface.viewers.SelectionChangedEvent;
34 import org.eclipse.ui.IWorkbenchPage;
35 import org.eclipse.ui.PartInitException;
36 import org.eclipse.ui.PlatformUI;
37
38
39 /**
40  * The ConnectionViewUniversalListener manages all events for the connection view.
41  *
42  * @author <a HREF="mailto:dev@directory.apache.org">Apache Directory Project</a>
43  * @version $Rev$, $Date$
44  */

45 public class ConnectionViewUniversalListener extends ConnectionUniversalListener
46 {
47
48     /** The connection view */
49     protected ConnectionView view;
50
51     /** This listener is used to ensure that the browser view is opened
52      when an object in the connection view is selected */

53     private ISelectionChangedListener viewerSelectionListener = new ISelectionChangedListener()
54     {
55         public void selectionChanged( SelectionChangedEvent event )
56         {
57             IConnection[] connections = SelectionUtils.getConnections( event.getSelection() );
58             if ( connections.length == 1 )
59             {
60                 ensureViewVisible( connections[0] );
61             }
62         }
63     };
64
65     /** This listener opens/closes a connection when double clicking a connection */
66     private IDoubleClickListener viewerDoubleClickListener = new IDoubleClickListener()
67     {
68         public void doubleClick( DoubleClickEvent event )
69         {
70             IConnection[] connections = SelectionUtils.getConnections( event.getSelection() );
71             if ( connections.length == 1 )
72             {
73                 toggleConnection( connections[0] );
74             }
75         }
76     };
77
78
79     /**
80      * Creates a new instance of ConnectionViewUniversalListener.
81      *
82      * @param view the connection view
83      */

84     public ConnectionViewUniversalListener( ConnectionView view )
85     {
86         super( view.getMainWidget().getViewer() );
87         this.view = view;
88
89         // listeners
90
viewer.addSelectionChangedListener( viewerSelectionListener );
91         viewer.addDoubleClickListener( viewerDoubleClickListener );
92     }
93
94
95     /**
96      * {@inheritDoc}
97      */

98     public void dispose()
99     {
100         this.view = null;
101         super.dispose();
102     }
103
104
105     /**
106      * Ensures that the browser view and modification log viewa are opended
107      * and ready to show the given selection.
108      *
109      * @param selection the view's selection.
110      */

111     private void ensureViewVisible( IConnection selection )
112     {
113         if ( view != null )
114         {
115             try
116             {
117                 PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().showView( BrowserView.getId(),
118                     null, IWorkbenchPage.VIEW_VISIBLE );
119             }
120             catch ( PartInitException e )
121             {
122             }
123             catch ( NullPointerException JavaDoc e )
124             {
125             }
126             
127             try
128             {
129                 PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().showView( ModificationLogsView.getId(),
130                     null, IWorkbenchPage.VIEW_VISIBLE );
131             }
132             catch ( PartInitException e )
133             {
134             }
135             catch ( NullPointerException JavaDoc e )
136             {
137             }
138         }
139     }
140
141
142     /**
143      * Opens a closed connections or closes an opened connection.
144      *
145      * @param connection the connection
146      */

147     private void toggleConnection( IConnection connection )
148     {
149         if ( connection.isOpened() )
150         {
151             if ( connection.canClose() )
152             {
153                 connection.close();
154             }
155         }
156         else
157         {
158             OpenConnectionsJob ocj = new OpenConnectionsJob( connection );
159             ocj.execute();
160         }
161     }
162
163 }
164
Popular Tags