/* * JBoss, Home of Professional Open Source * Copyright 2005, JBoss Inc., and individual contributors as indicated * by the @authors tag. See the copyright.txt in the distribution for a * full listing of individual contributors. * * This is free software; you can redistribute it and/or modify it * under the terms of the GNU Lesser General Public License as * published by the Free Software Foundation; either version 2.1 of * the License, or (at your option) any later version. * * This software is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this software; if not, write to the Free * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA * 02110-1301 USA, or see the FSF site: http://www.fsf.org. */ package org.hibernate.eclipse.console.wizards; import org.eclipse.jface.viewers.CellEditor; import org.eclipse.jface.viewers.TextCellEditor; import org.eclipse.swt.SWT; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.events.SelectionListener; import org.eclipse.swt.layout.FillLayout; 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.Group; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Table; import org.eclipse.swt.widgets.Tree; import org.eclipse.swt.widgets.Widget; import org.hibernate.eclipse.console.HibernateConsoleMessages; public class TreeToTableComposite extends Composite { static protected class NullableTextCellEditor extends TextCellEditor { public NullableTextCellEditor(Composite parent) { super( parent ); } protected void doSetValue(Object value) { if(value==null) { value=""; } //$NON-NLS-1$ super.doSetValue( value ); } public Object doGetValue() { String str = (String) super.doGetValue(); if(str==null || str.trim().length()==0) { return null; } else { return super.doGetValue(); } } } static public class MultiStateCellEditor extends CellEditor { private int value; private final int maxStates; public MultiStateCellEditor(Composite parent, int stateCount, int initialValue) { super(parent); if(stateCount < 1) throw new IllegalArgumentException(HibernateConsoleMessages.TreeToTableComposite_incorrect_state_count); maxStates= stateCount; if(!(initialValue >= 0 && initialValue < stateCount)) throw new IllegalArgumentException(HibernateConsoleMessages.TreeToTableComposite_incorrect_initial_value); value= initialValue; setValueValid(true); } public void activate() { value= getNextValue(maxStates, value); fireApplyEditorValue(); } public static int getNextValue(int stateCount, int currentValue){ if(!(stateCount > 1)) throw new IllegalStateException(HibernateConsoleMessages.TreeToTableComposite_incorrect_state_count); if(!(currentValue >= 0 && currentValue < stateCount)) throw new IllegalStateException(HibernateConsoleMessages.TreeToTableComposite_incorrect_initial_value); return (currentValue + 1) % stateCount; } protected Control createControl(Composite parent) { return null; } protected Object doGetValue() { return Integer.valueOf(value); } protected void doSetFocus() { // Ignore } protected void doSetValue(Object value) { this.value = ((Integer) value).intValue(); if(!(this.value >= 0 && this.value < maxStates)) { throw new IllegalStateException(HibernateConsoleMessages.TreeToTableComposite_invalid_value); } } } /** CellEditor that works like a texteditor, but returns/accepts Integer values. If the entered string is not parsable it returns null */ static protected final class IntegerCellEditor extends NullableTextCellEditor { public IntegerCellEditor(Composite parent) { super( parent ); } protected void doSetValue(Object value) { if(value!=null && value instanceof Integer) { value = ((Integer)value).toString(); } super.doSetValue( value ); } public Object doGetValue() { String str = (String) super.doGetValue(); if(str==null || str.trim().length()==0) { return null; } else { try { return Integer.valueOf(Integer.parseInt((String) super.doGetValue())); } catch(NumberFormatException nfe) { return null; } } } } private Group dbgroup = null; private Composite manipulationGroup = null; protected Tree tree = null; private Group tableFiltersGroup = null; protected Table rightTable = null; private Button upButton = null; private Button downButton = null; private Button removeButton = null; private Button removeAllButton = null; private Label fillLabel = null; private Composite composite = null; private Button refreshButton = null; private Label emptyLabel = null; private Button[] addButtons; private SelectionListener buttonListener= new SelectionAdapter() { public void widgetSelected(SelectionEvent e) { Widget button = e.widget; for (int i = 0; i < addButtons.length; i++) { Button but = addButtons[i]; if(button == but) { handleAddButtonPressed(i); } } } };; public TreeToTableComposite(Composite parent, int style) { super( parent, style ); initialize(); } protected void handleAddButtonPressed(int i) { } protected void initialize() { GridLayout gridLayout = new GridLayout(); gridLayout.numColumns = 3; createDbgroup(); this.setLayout(gridLayout); createIncludeExcludeGroup(); createTableFiltersGroup(); createComposite(); setSize(new org.eclipse.swt.graphics.Point(913,358)); new Label(this, SWT.NONE); } /** * This method initializes dbgroup * */ private void createDbgroup() { GridData gridData = new org.eclipse.swt.layout.GridData(); gridData.horizontalAlignment = org.eclipse.swt.layout.GridData.FILL; gridData.horizontalIndent = 0; gridData.grabExcessVerticalSpace = true; gridData.grabExcessHorizontalSpace = true; gridData.verticalAlignment = org.eclipse.swt.layout.GridData.FILL; dbgroup = new Group( this, SWT.NONE ); dbgroup.setText(getTreeTitle()); dbgroup.setLayout(new FillLayout()); createTree(); dbgroup.setLayoutData(gridData); } protected String getTreeTitle() { return HibernateConsoleMessages.TreeToTableComposite_database_schema; } /** * This method initializes includeExcludeGroup * */ private void createIncludeExcludeGroup() { GridData gridData6 = new org.eclipse.swt.layout.GridData(); gridData6.horizontalAlignment = org.eclipse.swt.layout.GridData.FILL; gridData6.verticalSpan = 1; gridData6.horizontalSpan = 1; gridData6.grabExcessVerticalSpace = false; gridData6.heightHint = 24; gridData6.verticalAlignment = org.eclipse.swt.layout.GridData.FILL; GridData gridData5 = new org.eclipse.swt.layout.GridData(); gridData5.horizontalAlignment = org.eclipse.swt.layout.GridData.FILL; gridData5.verticalAlignment = org.eclipse.swt.layout.GridData.CENTER; GridData gridData4 = new org.eclipse.swt.layout.GridData(); gridData4.horizontalAlignment = org.eclipse.swt.layout.GridData.FILL; gridData4.verticalAlignment = org.eclipse.swt.layout.GridData.CENTER; GridData gridData3 = new org.eclipse.swt.layout.GridData(); gridData3.horizontalAlignment = org.eclipse.swt.layout.GridData.FILL; gridData3.verticalAlignment = org.eclipse.swt.layout.GridData.CENTER; GridLayout gridLayout1 = new GridLayout(); gridLayout1.marginWidth = 5; gridLayout1.marginHeight = 5; GridData gridData1 = new org.eclipse.swt.layout.GridData(); gridData1.horizontalAlignment = org.eclipse.swt.layout.GridData.BEGINNING; gridData1.grabExcessVerticalSpace = false; gridData1.grabExcessHorizontalSpace = false; gridData1.verticalAlignment = org.eclipse.swt.layout.GridData.CENTER; manipulationGroup = new Composite( this, SWT.NONE ); manipulationGroup.setLayoutData(gridData1); manipulationGroup.setLayout(gridLayout1); createAddButtons(manipulationGroup); fillLabel = new Label(manipulationGroup, SWT.NONE); fillLabel.setText(""); //$NON-NLS-1$ fillLabel.setLayoutData(gridData6); upButton = new Button(manipulationGroup, SWT.NONE); upButton.setText(HibernateConsoleMessages.TreeToTableComposite_up); upButton.setLayoutData(gridData5); upButton.addSelectionListener( new org.eclipse.swt.events.SelectionAdapter() { public void widgetSelected(org.eclipse.swt.events.SelectionEvent e) { doMoveUp(); } } ); downButton = new Button(manipulationGroup, SWT.NONE); downButton.setText(HibernateConsoleMessages.TreeToTableComposite_down); downButton.setLayoutData(gridData4); downButton.addSelectionListener( new org.eclipse.swt.events.SelectionAdapter() { public void widgetSelected(org.eclipse.swt.events.SelectionEvent e) { doMoveDown(); } } ); removeButton = new Button(manipulationGroup, SWT.NONE); removeButton.setText(HibernateConsoleMessages.TreeToTableComposite_remove); removeButton.setLayoutData(gridData3); removeButton.addSelectionListener(new org.eclipse.swt.events.SelectionAdapter() { public void widgetSelected(org.eclipse.swt.events.SelectionEvent e) { doRemove(); } }); removeAllButton = new Button(manipulationGroup, SWT.NONE); removeAllButton.setText(HibernateConsoleMessages.TreeToTableComposite_remove_all); removeAllButton.setLayoutData(gridData3); removeAllButton.addSelectionListener(new org.eclipse.swt.events.SelectionAdapter() { public void widgetSelected(org.eclipse.swt.events.SelectionEvent e) { doRemoveAll(); } }); } private void createAddButtons(Composite parent) { String[] addButtonLabels = getAddButtonLabels(); addButtons = new Button[addButtonLabels.length]; for (int i = 0; i < addButtonLabels.length; i++) { String label = addButtonLabels[i]; addButtons[i] = createButton(parent, label); addButtons[i].setEnabled(true); } } private Button createButton(Composite parent, String label) { Button button = new Button(parent, SWT.PUSH); GridData data = new GridData(); data.horizontalAlignment = GridData.FILL; button.setLayoutData(data); button.setFont(parent.getFont() ); button.setText(label); button.setEnabled(false); button.addSelectionListener(buttonListener ); return button; } protected String[] getAddButtonLabels() { return new String[] { HibernateConsoleMessages.TreeToTableComposite_include, HibernateConsoleMessages.TreeToTableComposite_exclude}; } protected void doRemove() { // TODO Auto-generated method stub } protected void doRemoveAll() { // TODO Auto-generated method stub } protected void doMoveDown() { // TODO Auto-generated method stub } protected void doMoveUp() { // TODO Auto-generated method stub } /** * This method initializes tree * */ private void createTree() { tree = new Tree(dbgroup, SWT.MULTI); } /** * This method initializes tableFiltersGroup * */ private void createTableFiltersGroup() { GridData gridData2 = new org.eclipse.swt.layout.GridData(); gridData2.horizontalAlignment = org.eclipse.swt.layout.GridData.FILL; gridData2.grabExcessHorizontalSpace = true; gridData2.grabExcessVerticalSpace = true; gridData2.horizontalSpan = 1; gridData2.verticalAlignment = org.eclipse.swt.layout.GridData.FILL; tableFiltersGroup = new Group( this, SWT.NONE ); tableFiltersGroup.setText(getTableTitle()); tableFiltersGroup.setLayout(new FillLayout()); createTableFilters(); tableFiltersGroup.setLayoutData(gridData2); } protected String getTableTitle() { return HibernateConsoleMessages.TreeToTableComposite_table_filters; } /** * This method initializes tableFilters * */ private void createTableFilters() { rightTable = new Table(tableFiltersGroup, SWT.SINGLE | SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION ); rightTable.setHeaderVisible(true); rightTable.setLinesVisible(true); createTableColumns(rightTable); } protected void createTableColumns(Table table) { } /** * This method initializes composite * */ private void createComposite() { GridData gridData9 = new org.eclipse.swt.layout.GridData(); gridData9.horizontalAlignment = org.eclipse.swt.layout.GridData.FILL; gridData9.grabExcessHorizontalSpace = true; gridData9.verticalAlignment = org.eclipse.swt.layout.GridData.CENTER; GridLayout gridLayout2 = new GridLayout(); gridLayout2.numColumns = 2; GridData gridData8 = new org.eclipse.swt.layout.GridData(); gridData8.horizontalAlignment = org.eclipse.swt.layout.GridData.FILL; gridData8.grabExcessHorizontalSpace = false; gridData8.verticalAlignment = org.eclipse.swt.layout.GridData.FILL; composite = new Composite( this, SWT.NONE ); composite.setLayoutData(gridData8); composite.setLayout(gridLayout2); emptyLabel = new Label(composite, SWT.NONE); emptyLabel.setText(""); //$NON-NLS-1$ emptyLabel.setLayoutData(gridData9); refreshButton = new Button(composite, SWT.NONE); refreshButton.setText(HibernateConsoleMessages.TreeToTableComposite_refresh); refreshButton .addSelectionListener( new org.eclipse.swt.events.SelectionAdapter() { public void widgetSelected(org.eclipse.swt.events.SelectionEvent e) { doRefreshTree(); } } ); } protected void doRefreshTree() { } public void setEnabled(boolean enabled) { upButton.setEnabled(enabled); downButton.setEnabled(enabled); removeButton.setEnabled(enabled); refreshButton.setEnabled(enabled); for (int i = 0; i < addButtons.length; i++) { addButtons[i].setEnabled(enabled); } } } // @jve:decl-index=0:visual-constraint="10,10"