Java tutorial
/******************************************************************************* * Copyright 2017 Capital One Services, LLC and Bitwise, Inc. * Licensed 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 hydrograph.ui.propertywindow.widgets.utility; import java.util.ArrayList; import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.jface.fieldassist.ControlDecoration; import org.eclipse.jface.fieldassist.FieldDecoration; import org.eclipse.jface.fieldassist.FieldDecorationRegistry; import org.eclipse.jface.viewers.CellEditor; import org.eclipse.jface.viewers.ComboBoxCellEditor; import org.eclipse.jface.viewers.IStructuredContentProvider; import org.eclipse.jface.viewers.ITableLabelProvider; import org.eclipse.jface.viewers.TableViewer; import org.eclipse.jface.viewers.TextCellEditor; import org.eclipse.swt.SWT; import org.eclipse.swt.events.VerifyEvent; import org.eclipse.swt.events.VerifyListener; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.MessageBox; import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.Table; import org.eclipse.swt.widgets.TableColumn; import org.eclipse.swt.widgets.Text; import hydrograph.ui.common.util.Constants; import hydrograph.ui.propertywindow.messages.Messages; import hydrograph.ui.propertywindow.widgets.dialogs.join.support.JoinMappingEditingSupport; /** * The Class WidgetUtility. * * @author Bitwise */ public class WidgetUtility { private static final String ERROR = "Error"; private static final String ERROR_MESSAGE = "Please Select row to delete"; private WidgetUtility() { } /** * Creates the table viewer. * * @param tableViewer * the table viewer * @param iStructuredContentProvider * the i structured content provider * @param iTableLabelProvider * the i table label provider * @return the table viewer */ public static TableViewer createTableViewer(TableViewer tableViewer, IStructuredContentProvider iStructuredContentProvider, ITableLabelProvider iTableLabelProvider) { tableViewer.setContentProvider(iStructuredContentProvider); tableViewer.setLabelProvider(iTableLabelProvider); return tableViewer; } /** * Creates the table columns. * * @param table * the table * @param fields * the fields */ public static void createTableColumns(Table table, String[] fields) { for (String field : fields) { TableColumn tc = new TableColumn(table, SWT.CENTER); tc.setText(field); tc.setMoveable(true); } table.setHeaderVisible(true); table.setLinesVisible(true); } /** * This Method use to create error message decorator,Its show an error image with message on applied controller field. * @param control * @param message * @return ControlDecoration */ public static ControlDecoration addDecorator(Control control, String message) { ControlDecoration txtDecorator = new ControlDecoration(control, SWT.LEFT); FieldDecoration fieldDecoration = FieldDecorationRegistry.getDefault() .getFieldDecoration(FieldDecorationRegistry.DEC_ERROR); Image img = fieldDecoration.getImage(); txtDecorator.setImage(img); txtDecorator.setDescriptionText(message); return txtDecorator; } /** * Checks if is file extention. * @param file the file * @param extention the extention * @return true, if is file extention */ public static boolean isFileExtention(String file, String extention) { return extention.equalsIgnoreCase(file.substring(file.lastIndexOf("."))); } /** * Error message. * * @param message * the message */ public static void errorMessage(String message) { Shell shell = new Shell(); MessageBox messageBox = new MessageBox(shell, SWT.ICON_ERROR | SWT.OK); messageBox.setText(ERROR); messageBox.setMessage(message); messageBox.open(); } /** * create SWT MessageBox * * @param message to be shown * @param title of widow * @param style to be set on window */ public static int createMessageBox(String message, String windowTitle, int style) { Shell shell = new Shell(); MessageBox messageBox = new MessageBox(shell, style); messageBox.setText(windowTitle); messageBox.setMessage(message); return messageBox.open(); } /** * Elt confirm message. * * @param message * the message * @return true, if successful */ public static boolean eltConfirmMessage(String message) { return MessageDialog.openConfirm(Display.getCurrent().getActiveShell(), Messages.WARNING, message); } /** * Adds the text editor. * @param table the table * @param cellEditor the cell editor * @param position the position */ public static void addTextEditor(Table table, CellEditor[] cellEditor, int position) { cellEditor[position] = new TextCellEditor(table); } /** * Adds the combo box. * @param table the table * @param cellEditor the cell editor * @param data the data * @param position the position */ public static void addComboBox(Table table, CellEditor[] cellEditor, String[] data, int position) { cellEditor[position] = new ComboBoxCellEditor(table, data, SWT.READ_ONLY); } /** * Set the cursor on delete the row from table. * @param tableViewer * @param gridList */ public static void setCursorOnDeleteRow(TableViewer tableViewer, List<?> gridList) { Table table = tableViewer.getTable(); int[] indexes = table.getSelectionIndices(); if (table.getSelectionIndex() == -1) { WidgetUtility.errorMessage(ERROR_MESSAGE); } else { table.remove(indexes); List listOfItemsToRemove = new ArrayList(); for (int index : indexes) { listOfItemsToRemove.add(gridList.get(index)); } gridList.removeAll(listOfItemsToRemove); //highlight after deletion if (indexes.length == 1 && gridList.size() > 0) {//only one item is deleted if (gridList.size() == 1) {//list contains only one element table.select(0);// select the first element tableViewer.editElement(tableViewer.getElementAt(0), 0); } else if (gridList.size() == indexes[0]) {//deleted last item table.select(gridList.size() - 1);//select the last element which now at the end of the list tableViewer.editElement(tableViewer.getElementAt(gridList.size() - 1), 0); } else if (gridList.size() > indexes[0]) {//deleted element from middle of the list table.select(indexes[0] == 0 ? 0 : (indexes[0] - 1));//select the element from at the previous location tableViewer.editElement(tableViewer.getElementAt(indexes[0] == 0 ? 0 : (indexes[0] - 1)), 0); } } else if (indexes.length >= 2) {//multiple items are selected for deletion if (indexes[0] == 0) {//delete from 0 to ... if (gridList.size() >= 1) {//list contains only one element table.select(0);//select the remaining element tableViewer.editElement(tableViewer.getElementAt(0), 0); } } else {//delete started from element other than 0th element table.select((indexes[0]) - 1);//select element before the start of selection tableViewer.editElement(tableViewer.getElementAt((indexes[0]) - 1), 0); } } } } public static void addVerifyListnerToOutputEditingSupport(JoinMappingEditingSupport outputEditingSupport) { ((Text) outputEditingSupport.getEditor().getControl()).addVerifyListener(new VerifyListener() { @Override public void verifyText(VerifyEvent e) { String text = e.text; Matcher matcher = Pattern.compile(Constants.REGEX).matcher(text); if (matcher.matches()) { e.doit = true; } else { e.doit = false; } } }); } }