/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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.apache.directory.studio.connection.ui.widgets;
import org.apache.directory.studio.common.ui.widgets.ViewFormWidget;
import org.eclipse.jface.action.IMenuManager;
import org.eclipse.jface.action.IToolBarManager;
import org.eclipse.jface.viewers.TreeViewer;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Tree;
import org.eclipse.ui.IActionBars;
/**
* The ConnectionWidget is a reusable widget that displays all connections
* in a table viewer. It is used by
* org.apache.directory.studio.ldapbrowser.ui.views.connection.ConnectionView,
* org.apache.directory.studio.ldapbrowser.common.dialogs.SelectConnectionDialog and
* org.apache.directory.studio.ldapbrowser.common.dialogs.SelectReferralConnectionDialog.
*
* It includes a content and label provider to display connections with a nice icon.
*
* Further is provides a context menu and a local toolbar with actions to
* add, modify, delete, open and close connections.
*
* @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
*/
public class ConnectionWidget extends ViewFormWidget
{
/** The widget's configuration with the content provider, label provider and menu manager */
private ConnectionConfiguration configuration;
/** The action bars */
private IActionBars actionBars;
/** The tree widget used by the tree viewer */
private Tree tree;
/** The tree viewer */
private TreeViewer viewer;
/**
* Creates a new instance of ConnectionWidget.
*
* @param configuration the configuration
* @param actionBars the action bars
*/
public ConnectionWidget( ConnectionConfiguration configuration, IActionBars actionBars )
{
super();
this.configuration = configuration;
this.actionBars = actionBars;
}
/**
* {@inheritDoc}
*/
public void createWidget( Composite parent )
{
if ( actionBars == null )
{
super.createWidget( parent );
}
else
{
createContent( parent );
}
}
/**
* {@inheritDoc}
*/
public IToolBarManager getToolBarManager()
{
if ( actionBars == null )
{
return super.getToolBarManager();
}
else
{
return actionBars.getToolBarManager();
}
}
/**
* {@inheritDoc}
*/
public IMenuManager getMenuManager()
{
if ( actionBars == null )
{
return super.getMenuManager();
}
else
{
return actionBars.getMenuManager();
}
}
/**
* {@inheritDoc}
*/
public IMenuManager getContextMenuManager()
{
if ( actionBars == null )
{
return super.getContextMenuManager();
}
else
{
return configuration.getContextMenuManager( viewer );
}
}
/**
* {@inheritDoc}
*/
protected Control createContent( Composite parent )
{
tree = new Tree( parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER );
GridData data = new GridData( GridData.FILL_BOTH );
data.widthHint = 450;
data.heightHint = 250;
tree.setLayoutData( data );
viewer = new TreeViewer( tree );
// setup sorter
configuration.getSorter().connect( viewer );
// setup providers
viewer.setContentProvider( configuration.getContentProvider( viewer ) );
viewer.setLabelProvider( configuration.getLabelProvider( viewer ) );
return tree;
}
/**
* Sets the input to the table viewer.
*
* @param input the input
*/
public void setInput( Object input )
{
viewer.setInput( input );
}
/**
* Sets focus to the table viewer.
*/
public void setFocus()
{
viewer.getTree().setFocus();
}
/**
* {@inheritDoc}
*/
public void dispose()
{
if ( viewer != null )
{
configuration.dispose();
configuration = null;
tree.dispose();
tree = null;
viewer = null;
}
}
/**
* Gets the tree viewer.
*
* @return the tree viewer
*/
public TreeViewer getViewer()
{
return viewer;
}
}