/* * JBoss, Home of Professional Open Source. * * See the LEGAL.txt file distributed with this work for information regarding copyright ownership and licensing. * * See the AUTHORS.txt file distributed with this work for a full listing of individual contributors. */ package org.teiid.designer.ui.views; import org.eclipse.core.runtime.Assert; import org.eclipse.jface.viewers.ILabelProvider; import org.eclipse.jface.viewers.LabelProvider; import org.eclipse.swt.SWT; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Event; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Listener; import org.eclipse.swt.widgets.Text; import org.eclipse.ui.dialogs.FilteredList; import org.teiid.designer.core.ModelerCore; import org.teiid.designer.query.IQueryService; import org.teiid.designer.ui.UiConstants; /** * SQLReservedWordsView is the View to display all available SQL ReservedWords in Designer. * * @since 8.0 */ public class SQLReservedWordsView extends ModelerView { private static final String TEXT_ENTRY_LABEL_TEXT = UiConstants.Util.getString("SQLReservedWordsPanel.textEntryLabel.text"); //$NON-NLS-1$ private static final String UPPER_TABLE_LABEL_TEXT = UiConstants.Util.getString("SQLReservedWordsPanel.upperTableLabel.text"); //$NON-NLS-1$ private Object[] fElements = null; // List to contain all SQL Reserved Words private FilteredList fFilteredList; // Filtered List based on filter selection private ILabelProvider fFilterRenderer; // List renderer for SQL Words Text fFilterText; // entry for filter string // Filter properties private boolean fIgnoreCase = true; private boolean fAllowDuplicates = false; private boolean fMatchEmptyString = true; /** * Construct SQLReservedWords View for viewing all available SQL Reserved words. */ public SQLReservedWordsView() { super(); } /** * @see org.eclipse.ui.IWorkbenchPart#createPartControl(org.eclipse.swt.widgets.Composite) */ @Override public void createPartControl( final Composite parent ) { super.createPartControl(parent); GridLayout gridLayout = new GridLayout(); parent.setLayout(gridLayout); GridData gridData1 = new GridData(GridData.FILL_BOTH); parent.setLayoutData(gridData1); createLabel(parent, TEXT_ENTRY_LABEL_TEXT); createFilterText(parent); createLabel(parent, UPPER_TABLE_LABEL_TEXT); createFilteredList(parent); fElements = getAllSQLReservedWords(); setListElements(fElements); } private Object[] getAllSQLReservedWords() { IQueryService service = ModelerCore.getTeiidQueryService(); return service.getReservedWords().toArray(); } /** * Sets the elements of the list (widget). To be called within open(). * * @param elements the elements of the list. */ protected void setListElements( Object[] elements ) { Assert.isNotNull(fFilteredList); fFilteredList.setElements(elements); } /** * Creates a label if name was not <code>null</code>. * * @param parent the parent composite. * @param name the name of the label. * @return returns a label if a name was given, <code>null</code> otherwise. */ protected Label createLabel( Composite parent, String name ) { if (name == null) return null; Label label = new Label(parent, SWT.NONE); label.setText(name); label.setFont(parent.getFont()); return label; } /** * Creates Text Widget for Filter string entry * * @param parent the parent composite. * @return returns Text Widget. */ protected Text createFilterText( Composite parent ) { Text text = new Text(parent, SWT.BORDER); GridData data = new GridData(); data.grabExcessVerticalSpace = false; data.grabExcessHorizontalSpace = true; data.horizontalAlignment = GridData.FILL; data.verticalAlignment = GridData.BEGINNING; text.setLayoutData(data); text.setFont(parent.getFont()); // Initial filter text is empty text.setText(""); //$NON-NLS-1$ Listener listener = new Listener() { @Override public void handleEvent( Event e ) { fFilteredList.setFilter(fFilterText.getText()); } }; text.addListener(SWT.Modify, listener); fFilterText = text; return text; } /** * Creates a filtered list for the Filtered SQL Reserved Words. * * @param parent the parent composite. * @return returns the filtered list widget. */ private FilteredList createFilteredList( Composite parent ) { int flags = SWT.BORDER | SWT.V_SCROLL | SWT.H_SCROLL | SWT.SINGLE; fFilterRenderer = new LabelProvider(); FilteredList list = new FilteredList(parent, flags, fFilterRenderer, fIgnoreCase, fAllowDuplicates, fMatchEmptyString); GridData data = new GridData(); data.grabExcessVerticalSpace = true; data.grabExcessHorizontalSpace = true; data.horizontalAlignment = GridData.FILL; data.verticalAlignment = GridData.FILL; list.setLayoutData(data); list.setFont(parent.getFont()); list.setFilter(""); //$NON-NLS-1$ fFilteredList = list; return list; } /** * @see org.eclipse.ui.IWorkbenchPart#setFocus() */ @Override public void setFocus() { } /* (non-Javadoc) * @see org.eclipse.ui.IWorkbenchPart#dispose() */ @Override public void dispose() { super.dispose(); } }