--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sysmodelmgr/com.symbian.smt.gui/src/com/symbian/smt/gui/smtwidgets/IgnoreWidget.java Thu Mar 11 19:08:43 2010 +0200
@@ -0,0 +1,293 @@
+// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+package com.symbian.smt.gui.smtwidgets;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.KeyEvent;
+import org.eclipse.swt.events.KeyListener;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.layout.FillLayout;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.layout.RowData;
+import org.eclipse.swt.layout.RowLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Combo;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Table;
+import org.eclipse.swt.widgets.TableColumn;
+import org.eclipse.swt.widgets.TableItem;
+import org.eclipse.swt.widgets.Text;
+
+public class IgnoreWidget extends Composite {
+ private Combo itemTypeCombo;
+ private Text itemNameText;
+ private Table ignoreItemsTable;
+ private Button modifyButton;
+
+ /**
+ * Creates an IgnoreWidget composite object
+ *
+ * @return void
+ */
+ public IgnoreWidget(final Composite parent, int style) {
+ super(parent, style);
+
+ this.setLayout(new FillLayout());
+
+ final Composite gridLayoutComposite = new Composite(this, SWT.NONE);
+ final GridLayout gridLayout = new GridLayout();
+ gridLayout.numColumns = 4;
+ gridLayoutComposite.setLayout(gridLayout);
+
+ ignoreItemsTable = new Table(gridLayoutComposite, SWT.FULL_SELECTION
+ | SWT.BORDER);
+ ignoreItemsTable.setHeaderVisible(true);
+ ignoreItemsTable.setLinesVisible(true);
+ final GridData gd_ignoreItemsTable = new GridData(SWT.FILL, SWT.FILL,
+ true, true, 4, 1);
+ ignoreItemsTable.setLayoutData(gd_ignoreItemsTable);
+ ignoreItemsTable.addSelectionListener(new SelectionAdapter() {
+ public void widgetSelected(final SelectionEvent e) {
+ // When an item in the table is selected populate the item type
+ // combo and the
+ // item name text with the relevant information
+ TableItem itemSelected = ignoreItemsTable
+ .getItem(ignoreItemsTable.getSelectionIndex());
+
+ int index = 0;
+
+ for (String item : itemTypeCombo.getItems()) {
+ if (item.equals(itemSelected.getText(0))) {
+ itemTypeCombo.select(index);
+ }
+ index++;
+ }
+
+ itemNameText.setText(itemSelected.getText(1));
+ itemNameText.setFocus();
+ modifyButton.setEnabled(true);
+ }
+ });
+
+ final TableColumn itemTypeTableColumn = new TableColumn(
+ ignoreItemsTable, SWT.NONE);
+ itemTypeTableColumn.setWidth(100);
+ itemTypeTableColumn.setText("Item Type");
+
+ final TableColumn itemNameTableColumn = new TableColumn(
+ ignoreItemsTable, SWT.NONE);
+ itemNameTableColumn.setWidth(269);
+ itemNameTableColumn.setText("Item Name");
+
+ final Label itemTypeLabel = new Label(gridLayoutComposite, SWT.NONE);
+ itemTypeLabel.setText("Item Type");
+
+ itemTypeCombo = new Combo(gridLayoutComposite, SWT.READ_ONLY);
+ itemTypeCombo.setLayoutData(new GridData());
+ itemTypeCombo.setItems(new String[] { "layer", "block", "subblock",
+ "collection", "component" });
+ itemTypeCombo.select(0);
+
+ final Label itemNameLabel = new Label(gridLayoutComposite, SWT.NONE);
+ itemNameLabel.setLayoutData(new GridData());
+ itemNameLabel.setText("Item Name");
+
+ itemNameText = new Text(gridLayoutComposite, SWT.BORDER);
+ final GridData gd_itemNameText = new GridData(SWT.FILL, SWT.CENTER,
+ true, false);
+ itemNameText.setLayoutData(gd_itemNameText);
+ itemNameText.addKeyListener(new KeyListener() {
+ public void keyPressed(KeyEvent e) {
+ }
+
+ public void keyReleased(KeyEvent e) {
+ if (itemNameText.getText().length() == 0) {
+ modifyButton.setEnabled(false);
+ }
+ }
+ });
+
+ final Composite buttonsComposite = new Composite(gridLayoutComposite,
+ SWT.NONE);
+ final GridData gd_buttonsComposite = new GridData(SWT.CENTER,
+ SWT.CENTER, false, false, 4, 1);
+ buttonsComposite.setLayoutData(gd_buttonsComposite);
+ final RowLayout rowLayout = new RowLayout();
+ rowLayout.spacing = 30;
+ buttonsComposite.setLayout(rowLayout);
+
+ final Button addButton = new Button(buttonsComposite, SWT.NONE);
+ addButton.addSelectionListener(new SelectionAdapter() {
+ public void widgetSelected(final SelectionEvent e) {
+ // Check to see if an item had been selected and item text has
+ // been entered
+ if (itemTypeCombo.getText().length() > 0
+ && itemNameText.getText().trim().length() > 0) {
+
+ // Check that combination of type and text doesn't already
+ // exist in the table
+ Boolean alreadyExistsInTable = false;
+
+ for (TableItem item : ignoreItemsTable.getItems()) {
+ if (item.getText(0).equals(itemTypeCombo.getText())
+ && item.getText(1).equalsIgnoreCase(
+ itemNameText.getText().trim())) {
+ alreadyExistsInTable = true;
+ }
+ }
+
+ // Add to the table if does not already exist
+ if (!alreadyExistsInTable) {
+ final TableItem newItemTableItem = new TableItem(
+ ignoreItemsTable, SWT.BORDER);
+ newItemTableItem.setText(0, itemTypeCombo.getText());
+ newItemTableItem.setText(1, itemNameText.getText());
+
+ // Clear the text entry
+ itemNameText.setText("");
+ modifyButton.setEnabled(false);
+ } else {
+ MessageDialog
+ .openError(
+ parent.getShell(),
+ "Error",
+ itemTypeCombo.getText()
+ + " "
+ + itemNameText.getText()
+ + " already exists in the list of items to ignore.");
+ }
+ }
+
+ itemNameText.setFocus();
+ }
+ });
+
+ final RowData rd_addButton = new RowData();
+ rd_addButton.width = 75;
+ addButton.setLayoutData(rd_addButton);
+ addButton.setText("Add");
+
+ final Button removeButton = new Button(buttonsComposite, SWT.NONE);
+ removeButton.addSelectionListener(new SelectionAdapter() {
+ public void widgetSelected(final SelectionEvent e) {
+ if (ignoreItemsTable.getSelectionIndex() >= 0) {
+ ignoreItemsTable.remove(ignoreItemsTable
+ .getSelectionIndex());
+
+ // Clear the text entry
+ itemNameText.setText("");
+ modifyButton.setEnabled(false);
+ } else {
+ MessageDialog
+ .openInformation(parent.getShell(), "Info",
+ "You need to select an item from the list before you can remove it.");
+ }
+
+ itemNameText.setFocus();
+ }
+ });
+
+ final RowData rd_removeButton = new RowData();
+ rd_removeButton.width = 75;
+ removeButton.setLayoutData(rd_removeButton);
+ removeButton.setText("Remove");
+
+ modifyButton = new Button(buttonsComposite, SWT.NONE);
+ modifyButton.addSelectionListener(new SelectionAdapter() {
+ public void widgetSelected(final SelectionEvent e) {
+ // Check to see if an item had been selected and item text has
+ // been entered
+ if (itemNameText.getText().length() > 0) {
+
+ // Check that combination of type and text doesn't already
+ // exist in the table
+ Boolean alreadyExistsInTable = false;
+
+ for (TableItem item : ignoreItemsTable.getItems()) {
+ if (item.getText(0).equals(itemTypeCombo.getText())
+ && item.getText(1).equals(
+ itemNameText.getText())) {
+ alreadyExistsInTable = true;
+ }
+ }
+
+ // Add to the table if does not already exist
+ if (!alreadyExistsInTable) {
+ TableItem itemSelected = ignoreItemsTable
+ .getItem(ignoreItemsTable.getSelectionIndex());
+
+ itemSelected.setText(0, itemTypeCombo.getText());
+ itemSelected.setText(1, itemNameText.getText());
+
+ // Clear the text entry
+ itemNameText.setText("");
+ modifyButton.setEnabled(false);
+ }
+ }
+
+ itemNameText.setFocus();
+ }
+ });
+
+ final RowData rd_modifyButton = new RowData();
+ rd_modifyButton.width = 75;
+ modifyButton.setLayoutData(rd_modifyButton);
+ modifyButton.setText("Modify");
+ modifyButton.setEnabled(false);
+ }
+
+ /**
+ * Returns a list of the ignore items
+ *
+ * @return List<String>
+ */
+ public List<String[]> getIgnoreItems() {
+ ArrayList<String[]> ignoreItems = new ArrayList<String[]>();
+
+ for (TableItem item : ignoreItemsTable.getItems()) {
+ String[] itemData = { item.getText(0), item.getText(1) };
+ ignoreItems.add(itemData);
+ }
+
+ return ignoreItems;
+ }
+
+ /**
+ * Sets the ignore items
+ *
+ * @param ignoreItems
+ * An ArrayList containing 2 element lists. The first element
+ * contains the item type and the second element contains the
+ * item text.
+ * @return void
+ */
+ public void setIgnoreItems(List<String[]> ignoreItems) {
+ ignoreItemsTable.removeAll();
+ for (String[] ignoreItem : ignoreItems) {
+ final TableItem newItemTableItem = new TableItem(ignoreItemsTable,
+ SWT.BORDER);
+ newItemTableItem.setText(0, ignoreItem[0]);
+ newItemTableItem.setText(1, ignoreItem[1]);
+ }
+ }
+}