sysmodelmgr/com.symbian.smt.gui/src/com/symbian/smt/gui/smtwidgets/SystemDefinitionFilesWidget.java
author terytkon
Thu, 11 Mar 2010 19:08:43 +0200
changeset 0 522a326673b6
permissions -rw-r--r--
Moved swconfigapps content under oss repository.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
     1
// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
     2
// All rights reserved.
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
     3
// This component and the accompanying materials are made available
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
     4
// under the terms of "Eclipse Public License v1.0"
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
     5
// which accompanies this distribution, and is available
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
     6
// at the URL "http://www.eclipse.org/legal/epl-v10.html".
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
     7
//
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
     8
// Initial Contributors:
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
     9
// Nokia Corporation - initial contribution.
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    10
//
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    11
// Contributors:
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    12
//
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    13
// Description:
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    14
//
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    15
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    16
package com.symbian.smt.gui.smtwidgets;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    17
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    18
import java.io.IOException;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    19
import java.io.InputStream;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    20
import java.net.URL;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    21
import java.util.ArrayList;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    22
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    23
import org.eclipse.core.runtime.FileLocator;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    24
import org.eclipse.core.runtime.Path;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    25
import org.eclipse.core.runtime.Platform;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    26
import org.eclipse.jface.dialogs.Dialog;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    27
import org.eclipse.swt.SWT;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    28
import org.eclipse.swt.events.PaintEvent;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    29
import org.eclipse.swt.events.PaintListener;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    30
import org.eclipse.swt.events.SelectionAdapter;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    31
import org.eclipse.swt.events.SelectionEvent;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    32
import org.eclipse.swt.graphics.Image;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    33
import org.eclipse.swt.layout.FillLayout;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    34
import org.eclipse.swt.layout.GridData;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    35
import org.eclipse.swt.layout.GridLayout;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    36
import org.eclipse.swt.layout.RowData;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    37
import org.eclipse.swt.layout.RowLayout;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    38
import org.eclipse.swt.widgets.Button;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    39
import org.eclipse.swt.widgets.Composite;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    40
import org.eclipse.swt.widgets.Display;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    41
import org.eclipse.swt.widgets.List;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    42
import org.eclipse.swt.widgets.Shell;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    43
import org.eclipse.ui.PlatformUI;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    44
import org.osgi.framework.Bundle;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    45
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    46
import com.symbian.smt.gui.Helper;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    47
import com.symbian.smt.gui.Logger;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    48
import com.symbian.smt.gui.smtwidgets.ValidModelEvent.Type;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    49
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    50
public class SystemDefinitionFilesWidget extends Composite implements
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    51
		ValidModelObservable {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    52
	private List systemDefinitionFilesList = null;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    53
	private ArrayList<ValidModelDefinedListener> listeners = new ArrayList<ValidModelDefinedListener>();
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    54
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    55
	/**
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    56
	 * Creates a SystemDefinitionFilesWidget composite object
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    57
	 * 
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    58
	 * @return void
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    59
	 */
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    60
	public SystemDefinitionFilesWidget(final Composite parent, int style) {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    61
		super(parent, style);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    62
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    63
		this.setLayout(new FillLayout());
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    64
		this.setRedraw(true);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    65
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    66
		final Composite compositeMainGridLayout = new Composite(this, SWT.NONE);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    67
		final GridLayout gridLayout = new GridLayout();
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    68
		gridLayout.numColumns = 2;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    69
		compositeMainGridLayout.setLayout(gridLayout);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    70
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    71
		systemDefinitionFilesList = new List(compositeMainGridLayout,
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    72
				SWT.V_SCROLL | SWT.H_SCROLL | SWT.BORDER);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    73
		systemDefinitionFilesList.setBackground(Display.getCurrent()
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    74
				.getSystemColor(SWT.COLOR_WHITE));
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    75
		final GridData gd_list = new GridData(SWT.FILL, SWT.FILL, true, true);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    76
		gd_list.widthHint = 271;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    77
		systemDefinitionFilesList.setLayoutData(gd_list);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    78
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    79
		systemDefinitionFilesList.addPaintListener(new PaintListener() {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    80
			public void paintControl(PaintEvent e) {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    81
				CheckRequiredInformationPresent();
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    82
			}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    83
		});
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    84
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    85
		final Composite compositeUpDownButtons = new Composite(
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    86
				compositeMainGridLayout, SWT.NONE);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    87
		final GridData gd_compositeUpDownButtons = new GridData();
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    88
		compositeUpDownButtons.setLayoutData(gd_compositeUpDownButtons);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    89
		compositeUpDownButtons.setLayout(new RowLayout(SWT.VERTICAL));
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    90
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    91
		final Button upButton = new Button(compositeUpDownButtons, SWT.FLAT);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    92
		final RowData rd_upButton = new RowData();
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    93
		rd_upButton.height = 26;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    94
		rd_upButton.width = 26;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    95
		upButton.setLayoutData(rd_upButton);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    96
		upButton.setImage(getUpArrowImage());
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    97
		upButton.addSelectionListener(new SelectionAdapter() {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    98
			public void widgetSelected(final SelectionEvent e) {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    99
				// Reorder the system definition files in the list by swapping
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   100
				// the item
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   101
				// selected with the item above
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   102
				int index = systemDefinitionFilesList.getSelectionIndex();
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   103
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   104
				if (index != -1 && index - 1 >= 0) {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   105
					String item = systemDefinitionFilesList.getItem(index);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   106
					String itemAbove = systemDefinitionFilesList
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   107
							.getItem(index - 1);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   108
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   109
					systemDefinitionFilesList.setItem(index - 1, item);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   110
					systemDefinitionFilesList.setItem(index, itemAbove);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   111
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   112
					systemDefinitionFilesList.setSelection(index - 1);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   113
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   114
				}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   115
				systemDefinitionFilesList.setFocus();
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   116
			}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   117
		});
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   118
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   119
		final Button downButton = new Button(compositeUpDownButtons, SWT.FLAT);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   120
		final RowData rd_downButton = new RowData();
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   121
		rd_downButton.height = 26;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   122
		rd_downButton.width = 26;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   123
		downButton.setLayoutData(rd_downButton);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   124
		downButton.setImage(getDownArrowImage());
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   125
		downButton.addSelectionListener(new SelectionAdapter() {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   126
			public void widgetSelected(final SelectionEvent e) {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   127
				// Reorder the system definition files in the list by swapping
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   128
				// the item
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   129
				// selected with the item below
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   130
				int index = systemDefinitionFilesList.getSelectionIndex();
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   131
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   132
				if (index != -1
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   133
						&& index + 1 < systemDefinitionFilesList.getItemCount()) { // index
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   134
																					// is
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   135
																					// 0
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   136
																					// relative,
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   137
																					// getItemCount
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   138
																					// is
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   139
																					// not
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   140
					String item = systemDefinitionFilesList.getItem(index);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   141
					String itemBelow = systemDefinitionFilesList
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   142
							.getItem(index + 1);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   143
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   144
					systemDefinitionFilesList.setItem(index + 1, item);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   145
					systemDefinitionFilesList.setItem(index, itemBelow);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   146
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   147
					systemDefinitionFilesList.setSelection(index + 1);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   148
				}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   149
				systemDefinitionFilesList.setFocus();
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   150
			}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   151
		});
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   152
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   153
		final Composite compositeAddRemoveButtons = new Composite(
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   154
				compositeMainGridLayout, SWT.NONE);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   155
		final GridData gd_compositeAddRemoveButtons = new GridData(SWT.CENTER,
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   156
				SWT.CENTER, false, false, 2, 1);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   157
		compositeAddRemoveButtons.setLayoutData(gd_compositeAddRemoveButtons);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   158
		final RowLayout rowLayout = new RowLayout();
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   159
		rowLayout.spacing = 30;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   160
		compositeAddRemoveButtons.setLayout(rowLayout);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   161
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   162
		final Button addSystemDefinitionButton = new Button(
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   163
				compositeAddRemoveButtons, SWT.NONE);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   164
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   165
		addSystemDefinitionButton.setText("Add System Definition File");
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   166
		addSystemDefinitionButton.addSelectionListener(new SelectionAdapter() {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   167
			public void widgetSelected(SelectionEvent e) {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   168
				java.util.List<String> currentItems = Helper
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   169
						.toListOfStrings(systemDefinitionFilesList.getItems());
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   170
				SystemDefinitionFileSelectionValidator validator = new SystemDefinitionFileSelectionValidator(
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   171
						currentItems);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   172
				Shell shell = PlatformUI.getWorkbench()
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   173
						.getActiveWorkbenchWindow().getShell();
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   174
				String dialogTitle = "New System Definition File";
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   175
				String dialogMessage = "Enter the path or URL to the system definition file";
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   176
				String initialPath = "";
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   177
				String[] filterNames = { "*.xml" };
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   178
				XmlFileSelectionDialog dialog = new XmlFileSelectionDialog(
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   179
						shell, dialogTitle, dialogMessage, initialPath,
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   180
						filterNames, validator);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   181
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   182
				dialog.open();
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   183
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   184
				if (dialog.getReturnCode() == Dialog.CANCEL) {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   185
					return;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   186
				}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   187
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   188
				String filename = dialog.getValue();
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   189
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   190
				if (filename != null && (filename.length() != 0)) {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   191
					systemDefinitionFilesList.add(filename);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   192
				}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   193
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   194
				systemDefinitionFilesList.setFocus();
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   195
			}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   196
		});
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   197
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   198
		final Button removeSystemDefinitionButton = new Button(
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   199
				compositeAddRemoveButtons, SWT.NONE);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   200
		removeSystemDefinitionButton.setText("Remove System Definition File");
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   201
		removeSystemDefinitionButton
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   202
				.addSelectionListener(new SelectionAdapter() {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   203
					public void widgetSelected(SelectionEvent e) {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   204
						int listIndex = systemDefinitionFilesList
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   205
								.getSelectionIndex();
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   206
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   207
						if (listIndex != -1) {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   208
							// Remove the system definition file from the list
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   209
							systemDefinitionFilesList.remove(listIndex);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   210
						}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   211
						systemDefinitionFilesList.setFocus();
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   212
					}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   213
				});
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   214
	}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   215
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   216
	/**
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   217
	 * Registers a listener object, which will be notified if the conditions for
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   218
	 * proceeding have been met.
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   219
	 * 
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   220
	 * @param listener
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   221
	 *            A ValidModelDefinedListener object
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   222
	 * @return void
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   223
	 * @see com.symbian.smt.gui.smtwidgets.ValidModelObservable#addModelListener(ValidModelDefinedListener)
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   224
	 */
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   225
	public void addModelListener(ValidModelDefinedListener listener) {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   226
		listeners.add(listener);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   227
	}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   228
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   229
	// Check that at least one system definition file has been specified. Any
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   230
	// registered
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   231
	// model listeners are notified with a ValidModelEvent.
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   232
	private void CheckRequiredInformationPresent() {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   233
		if (listeners.size() > 0) {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   234
			Boolean modelDefined = true;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   235
			String message = "";
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   236
			Type type = Type.SUCCESS;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   237
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   238
			if (systemDefinitionFilesList.getItems().length == 0) {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   239
				modelDefined = false;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   240
				message = "You must specify at least 1 system definition xml file to proceed.";
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   241
				type = Type.ERROR;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   242
			}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   243
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   244
			ValidModelEvent event = new ValidModelEvent(modelDefined, message,
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   245
					type);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   246
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   247
			for (ValidModelDefinedListener listener : listeners) {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   248
				listener.validModelDefined(event);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   249
			}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   250
		}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   251
	}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   252
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   253
	private Image getDownArrowImage() {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   254
		return new Image(getDisplay(),
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   255
				getImageAsStream("icons/Arrow_down_icons_24px.png"));
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   256
	}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   257
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   258
	private InputStream getImageAsStream(String imageLocation) {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   259
		Bundle bundle = Platform.getBundle("com.symbian.smt.gui");
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   260
		Path path = new Path(imageLocation);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   261
		URL imageURL = FileLocator.find(bundle, path, null);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   262
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   263
		try {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   264
			return imageURL.openStream();
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   265
		} catch (IOException e) {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   266
			Logger.log(e.getMessage(), e);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   267
		}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   268
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   269
		return null;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   270
	}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   271
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   272
	/**
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   273
	 * Returns a list of the system definition files
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   274
	 * 
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   275
	 * @return String[]
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   276
	 */
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   277
	public String[] getSystemDefinitions() {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   278
		String[] sysDefs = systemDefinitionFilesList.getItems();
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   279
		return sysDefs;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   280
	}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   281
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   282
	private Image getUpArrowImage() {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   283
		return new Image(getDisplay(),
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   284
				getImageAsStream("icons/Arrow_Up_icons_24px.png"));
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   285
	}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   286
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   287
	/**
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   288
	 * @see com.symbian.smt.gui.smtwidgets.ValidModelObservable#removeModelListener(ValidModelDefinedListener)
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   289
	 */
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   290
	public void removeModelListener(ValidModelDefinedListener listener) {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   291
		synchronized (listeners) {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   292
			listeners.remove(listener);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   293
		}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   294
	}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   295
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   296
	/**
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   297
	 * Sets the system definition files
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   298
	 * 
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   299
	 * @param sysDefs
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   300
	 *            A list containing system definition files
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   301
	 * @return void
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   302
	 */
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   303
	public void setSystemDefinitions(String[] sysDefs) {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   304
		systemDefinitionFilesList.setItems(sysDefs);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   305
	}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   306
}