/******************************************************************************* * Copyright (c) 2004, 2007 Boeing. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Boeing - initial API and implementation *******************************************************************************/ package org.eclipse.nebula.widgets.xviewer.example; import java.util.ArrayList; import java.util.Arrays; import java.util.Date; import java.util.List; import org.eclipse.jface.action.Action; import org.eclipse.jface.action.ActionContributionItem; import org.eclipse.nebula.widgets.xviewer.edit.DefaultXViewerControlFactory; import org.eclipse.nebula.widgets.xviewer.edit.XViewerControlFactory; import org.eclipse.nebula.widgets.xviewer.edit.XViewerConverter; import org.eclipse.nebula.widgets.xviewer.edit.XViewerMultiEditAdapter; import org.eclipse.nebula.widgets.xviewer.example.images.MyImageCache; import org.eclipse.nebula.widgets.xviewer.example.model.ISomeTask; import org.eclipse.nebula.widgets.xviewer.example.model.ISomeTask.RunDb; import org.eclipse.nebula.widgets.xviewer.example.model.ISomeTask.TaskType; import org.eclipse.nebula.widgets.xviewer.example.model.SomeTask; import org.eclipse.nebula.widgets.xviewer.util.XViewerDisplay; import org.eclipse.swt.SWT; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.ToolBar; import org.eclipse.swt.widgets.ToolItem; /** * Example use of XViewer. Run as application to see sample XViewer. * * @author Donald G. Dunne */ public class MyXViewerTest { static MyXViewer myXviewer; public static void main(String[] args) { // Get the Display. Create on if none exists Display Display_1 = Display.getCurrent(); boolean displayCreated = false; if (Display_1 == null) { Display_1 = Display.getDefault(); displayCreated = true; } else { Display_1 = Display.getDefault(); } Shell Shell_1 = new Shell(Display_1, SWT.SHELL_TRIM); Shell_1.setText("XViewer Test"); Shell_1.setBounds(0, 0, 1000, 500); Shell_1.setLayout(new GridLayout()); Shell_1.setLayoutData(new GridData(GridData.FILL_BOTH | GridData.HORIZONTAL_ALIGN_BEGINNING)); // Button composite for state transitions, etc Composite toolBarComposite = new Composite(Shell_1, SWT.NONE); // bComp.setBackground(mainSComp.getDisplay().getSystemColor(SWT.COLOR_CYAN)); toolBarComposite.setLayout(new GridLayout(2, false)); toolBarComposite.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); // Set property that this xviewer is outside the Eclipse workbench XViewerDisplay.setStandaloneXViewer(true, Display_1); myXviewer = new MyXViewer(Shell_1, SWT.MULTI | SWT.BORDER | SWT.FULL_SELECTION); myXviewer.getTree().setLayoutData(new GridData(GridData.FILL_BOTH)); myXviewer.setContentProvider(new MyXViewerContentProvider()); myXviewer.setLabelProvider(new MyXViewerLabelProvider(myXviewer)); // myXviewer.setLabelProvider(new // MyXViewerStyledTextLabelProvider(myXviewer)); // XViewerEditAdapter XViewerControlFactory cFactory = new DefaultXViewerControlFactory(); XViewerConverter converter = new MyXViewerConverter(); myXviewer.setXViewerEditAdapter(new XViewerMultiEditAdapter(cFactory, converter)); createTaskActionBar(toolBarComposite); List<Object> tasks = new ArrayList<Object>(); for (int x = 0; x < 1; x++) { tasks.addAll(getTestTasks()); } /** * Note: setInputXViewer must be called instead of setInput for XViewer to operate properly */ myXviewer.setInputXViewer(tasks); Shell_1.open(); while (!Shell_1.isDisposed()) { if (!Display_1.readAndDispatch()) { Display_1.sleep(); } } if (displayCreated) { Display_1.dispose(); } } public static void createTaskActionBar(Composite parent) { Composite actionComp = new Composite(parent, SWT.NONE); actionComp.setLayout(new GridLayout()); actionComp.setLayoutData(new GridData(GridData.END)); ToolBar toolBar = new ToolBar(actionComp, SWT.FLAT | SWT.RIGHT); GridData gd = new GridData(GridData.FILL_HORIZONTAL); toolBar.setLayoutData(gd); ToolItem refreshItem = new ToolItem(toolBar, SWT.PUSH); refreshItem.setImage(MyImageCache.getImage("refresh.gif")); refreshItem.setToolTipText("Refresh"); refreshItem.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { List<Object> tasks = new ArrayList<Object>(); for (int x = 0; x < 1; x++) { tasks.addAll(getTestTasks()); } /** * Note: setInputXViewer must be called instead of setInput for XViewer to operate properly */ myXviewer.setInputXViewer(tasks); } }); Action dropDownAction = myXviewer.getCustomizeAction(); new ActionContributionItem(dropDownAction).fill(toolBar, 0); ToolItem descriptionItem = new ToolItem(toolBar, SWT.PUSH); descriptionItem.setImage(MyImageCache.getImage("descriptionView.gif")); descriptionItem.setToolTipText("Show Description View"); descriptionItem.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { myXviewer.getCustomizeMgr().loadCustomization(MyDefaultCustomizations.getDescriptionCustomization()); myXviewer.refresh(); } }); ToolItem completeItem = new ToolItem(toolBar, SWT.PUSH); completeItem.setImage(MyImageCache.getImage("completionView.gif")); completeItem.setToolTipText("Show Completion View"); completeItem.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { myXviewer.getCustomizeMgr().loadCustomization(MyDefaultCustomizations.getCompletionCustomization()); myXviewer.refresh(); } }); ToolItem refreshSingleColumn = new ToolItem(toolBar, SWT.PUSH); refreshSingleColumn.setImage(MyImageCache.getImage("columnRefresh.gif")); refreshSingleColumn.setToolTipText("Example of Refreshing a Single Column"); refreshSingleColumn.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { @SuppressWarnings("unchecked") List<Object> items = (List<Object>) myXviewer.getInput(); for (Object item : items) { SomeTask task = (SomeTask) item; task.setTaskType(TaskType.Refreshed); } String columnId = MyXViewerFactory.Task_Type.getId(); myXviewer.refreshColumn(columnId); } }); } private static Date date = new Date(); private static Date getDate() { date = new Date(date.getTime() + (60000 * 60 * 2)); return date; } private static List<ISomeTask> getTestTasks() { List<ISomeTask> tasks = new ArrayList<ISomeTask>(); SomeTask task = new SomeTask(RunDb.Test_Db, TaskType.Backup, getDate(), "org.eclipse.osee.test1", "10:03", "run to test this", "Suite A", "mark@eclipse.com", 50, 50000); tasks.add(task); for (int x = 0; x < 5; x++) { task.addChild(new SomeTask(RunDb.Test_Db, TaskType.Backup, getDate(), "org.eclipse.osee.test33", "10:03", "run to test isit this - child " + x, "Suite A", "mark@eclipse.com", 50, 9223336854775807L)); } tasks.add(new SomeTask(RunDb.Production_Db, TaskType.Data_Exchange, getDate(), "org.eclipse.osee.test2", "9:22", "run to test that", "Suite B", "john@eclipse.com", 0, 50000L)); tasks.add(new SomeTask(RunDb.Production_Db, TaskType.Backup, getDate(), "org.eclipse.osee.test4", "8:23", "in this world", "Suite A", "john@eclipse.com", 50, 50000L)); tasks.add(new SomeTask(RunDb.Test_Db, TaskType.Backup, getDate(), "org.eclipse.osee.test3", "23:01", "now is the time", "Suite B", "mike@eclipse.com", 30, 9223372036854775807L)); tasks.add(new SomeTask(RunDb.Production_Db, TaskType.Db_Health, getDate(), "org.eclipse.osee.test5", "7:32", "may be never", "Suite A", "steve@eclipse.com", 10, 50000L)); tasks.add(new SomeTask(RunDb.Test_Db, TaskType.Data_Exchange, getDate(), "org.eclipse.osee.test14", "6:11", "", "Suite A", "steve@eclipse.com", 95, 50000L)); tasks.add(new SomeTask(RunDb.Production_Db, TaskType.Backup, getDate(), "org.eclipse.osee.test6", "5:13", "run to test this", "Suite B", "john@eclipse.com", 80, 50000L)); tasks.add(new SomeTask(RunDb.Test_Db, TaskType.Db_Health, getDate(), "org.eclipse.osee.test12", "23:15", "", "Suite A", "mike@eclipse.com", 90, 50000L)); tasks.add(new SomeTask(RunDb.Production_Db, TaskType.Backup, getDate(), "org.eclipse.osee.test13", "4:01", "run to test this", "Suite B", "steve@eclipse.com", 100, 50000L)); tasks.add(new SomeTask(RunDb.Production_Db, TaskType.Data_Exchange, getDate(), "org.eclipse.osee.test11", "3:16", "run to test this", "Suite A", "steve@eclipse.com", 53, 50000000000L)); tasks.add(new SomeTask(RunDb.Test_Db, TaskType.Backup, getDate(), "org.eclipse.osee.test10", "5:01", "run to test this", "Suite C", "mike@eclipse.com", 0, 50000L)); tasks.add(new SomeTask(RunDb.Production_Db, TaskType.Data_Exchange, getDate(), "org.eclipse.osee.test9", "4:27", "run to test this", "Suite C", "steve@eclipse.com", 90, 50000L)); tasks.add(new SomeTask(RunDb.Production_Db, TaskType.Regression, getDate(), "org.eclipse.osee.test7", "2:37", "run to test this", "Suite C", "john@eclipse.com", 20, 50000L)); int num = 10; for (String str : Arrays.asList("Now", "Cat", "Dog", "Tree", "Bike", "Sun", "Moon", "Grass", "Can", "Car", "Truck", "Block", "Earth", "Mars", "Venus", "Requirements visualization", "Requirements management", "Feature management", "Modeling", "Design", "Project Management", "Change management", "Configuration Management", "Software Information Management", "Build management", "Testing", "Release Management", "Software Deployment", "Issue management", "Monitoring and reporting", "Workflow")) { tasks.add(new SomeTask(RunDb.Test_Db, TaskType.Db_Health, getDate(), "org.eclipse.osee." + str, "24:" + num++, str + " will run to test this", "Suite C" + num++, str.toLowerCase().replaceAll(" ", ".") + "@eclipse.com", 20, 340000)); } return tasks; } }