Java tutorial
/* * created 08.05.2006 * * Copyright 2009, ByteRefinery * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * $Id$ */ package com.byterefinery.rmbench.dialogs; import org.eclipse.jface.dialogs.Dialog; import org.eclipse.jface.dialogs.IDialogConstants; import org.eclipse.jface.viewers.ColumnWeightData; import org.eclipse.jface.viewers.ILabelProviderListener; import org.eclipse.jface.viewers.IStructuredContentProvider; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.viewers.ITableLabelProvider; import org.eclipse.jface.viewers.TableLayout; import org.eclipse.jface.viewers.TableViewer; import org.eclipse.jface.viewers.Viewer; import org.eclipse.jface.window.Window; import org.eclipse.jface.wizard.WizardDialog; import org.eclipse.swt.SWT; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.Table; import org.eclipse.swt.widgets.TableColumn; import com.byterefinery.rmbench.EventManager; import com.byterefinery.rmbench.RMBenchPlugin; import com.byterefinery.rmbench.EventManager.Event; import com.byterefinery.rmbench.EventManager.Listener; import com.byterefinery.rmbench.model.dbimport.DBModel; import com.byterefinery.rmbench.util.ImageConstants; /** * The dialog fpr managing the JDBC connections * * @author Hannes Niederhausen * */ public class ConnectionDialog extends Dialog { private Button addButton; private Button editButton; private Button removeButton; private TableViewer viewer; private EventManager.Listener listener = new Listener() { public void eventOccurred(int eventType, Event event) { viewer.setInput(RMBenchPlugin.getDefault().getDBModels()); } public void register() { RMBenchPlugin.getEventManager().addListener(DBMODELS_ADDED | DBMODELS_CHANGED | DBMODELS_REMOVED, this); } }; public ConnectionDialog(Shell parentShell) { super(parentShell); } protected Control createDialogArea(Composite parent) { //parent.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); Composite comp = new Composite(parent, SWT.NONE); comp.setLayout(new GridLayout(2, false)); comp.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); viewer = new TableViewer(comp, SWT.BORDER); viewer.setContentProvider(new DBModelContentProvider()); viewer.setLabelProvider(new DBModelLabelProvider()); Table table = viewer.getTable(); table.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); table.addSelectionListener(new SelectionAdapter() { public void widgetSelected(SelectionEvent e) { if (viewer.getSelection().isEmpty()) { editButton.setImage(RMBenchPlugin.getImage(ImageConstants.EDIT_disabled)); editButton.setEnabled(false); removeButton.setImage(ImageConstants.DELETE_DISABLED_IMG); removeButton.setEnabled(false); return; } editButton.setImage(RMBenchPlugin.getImage(ImageConstants.EDIT)); editButton.setEnabled(true); removeButton.setImage(ImageConstants.DELETE_IMG); removeButton.setEnabled(true); } }); TableLayout layout = new TableLayout(); table.setLayout(layout); table.setHeaderVisible(true); TableColumn tc = new TableColumn(table, SWT.NONE); tc.setText(Messages.ConnectionDialog_connection_name); layout.addColumnData(new ColumnWeightData(50)); tc = new TableColumn(table, SWT.NONE); tc.setText(Messages.ConnectionDialog_database_name); layout.addColumnData(new ColumnWeightData(50)); Composite tableButtonComposite = createTableButtonBar(comp); GridData gridData = new GridData(SWT.NONE, SWT.FILL, false, true); gridData.verticalAlignment = SWT.CENTER; tableButtonComposite.setLayoutData(gridData); viewer.setInput(RMBenchPlugin.getDefault().getDBModels()); listener.register(); return comp; } private Composite createTableButtonBar(Composite parent) { Composite comp = new Composite(parent, SWT.NONE); GridLayout layout = new GridLayout(); comp.setLayout(layout); //GridData gridData = new GridData(); addButton = new Button(comp, SWT.PUSH); addButton.setImage(RMBenchPlugin.getImage(ImageConstants.ADD)); addButton.addSelectionListener(new SelectionAdapter() { public void widgetSelected(SelectionEvent e) { JdbcConnectionWizard wizard = new JdbcConnectionWizard(); WizardDialog dlg = new WizardDialog(addButton.getShell(), wizard); if (dlg.open() == Window.OK) { DBModel dbmodel = wizard.getDBModel(); RMBenchPlugin.addDBModel(dbmodel); } } }); editButton = new Button(comp, SWT.PUSH); editButton.setImage(RMBenchPlugin.getImage(ImageConstants.EDIT_disabled)); editButton.setEnabled(false); editButton.addSelectionListener(new SelectionAdapter() { public void widgetSelected(SelectionEvent e) { DBModel dbModel = (DBModel) ((IStructuredSelection) viewer.getSelection()).getFirstElement(); JdbcConnectionWizard wizard = new JdbcConnectionWizard(dbModel); WizardDialog dlg = new WizardDialog(addButton.getShell(), wizard); if (dlg.open() == Window.OK) { DBModel newDbModel = wizard.getDBModel(); RMBenchPlugin.dbModelChanged(dbModel, newDbModel); } } }); removeButton = new Button(comp, SWT.PUSH); removeButton.setImage(ImageConstants.DELETE_DISABLED_IMG); removeButton.setEnabled(false); removeButton.addSelectionListener(new SelectionAdapter() { public void widgetSelected(SelectionEvent e) { DBModel dbModel = (DBModel) ((IStructuredSelection) viewer.getSelection()).getFirstElement(); RMBenchPlugin.removeDBModel(dbModel); } }); return comp; } protected void configureShell(Shell newShell) { super.configureShell(newShell); newShell.setText(Messages.ConnectionDialog_dialog_title); newShell.setSize(330, 400); } public boolean close() { RMBenchPlugin.getEventManager().removeListener(listener); return super.close(); } protected void createButtonsForButtonBar(Composite parent) { createButton(parent, IDialogConstants.CLOSE_ID, IDialogConstants.CLOSE_LABEL, true); } private class DBModelContentProvider implements IStructuredContentProvider { public Object[] getElements(Object inputElement) { return RMBenchPlugin.getDefault().getDBModels(); } public void dispose() { } public void inputChanged(Viewer viewer, Object oldInput, Object newInput) { } } protected void buttonPressed(int buttonId) { if (buttonId == IDialogConstants.CLOSE_ID) close(); } private class DBModelLabelProvider implements ITableLabelProvider { public Image getColumnImage(Object element, int columnIndex) { return null; } public String getColumnText(Object element, int columnIndex) { DBModel dbModel = (DBModel) element; if (columnIndex == 0) { return dbModel.getName(); } else { return RMBenchPlugin.getExtensionManager().getDatabaseExtension(dbModel.getDatabaseInfo()) .getName(); } } public void addListener(ILabelProviderListener listener) { } public void dispose() { } public boolean isLabelProperty(Object element, String property) { return false; } public void removeListener(ILabelProviderListener listener) { } } }