[jboss-svn-commits] JBL Code SVN: r22397 - in labs/jbossrules/trunk/drools-eclipse/drools-eclipse-task/src/main/java/org/drools/eclipse/task: preferences and 1 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Thu Sep 4 10:35:48 EDT 2008


Author: KrisVerlaenen
Date: 2008-09-04 10:35:48 -0400 (Thu, 04 Sep 2008)
New Revision: 22397

Added:
   labs/jbossrules/trunk/drools-eclipse/drools-eclipse-task/src/main/java/org/drools/eclipse/task/preferences/
   labs/jbossrules/trunk/drools-eclipse/drools-eclipse-task/src/main/java/org/drools/eclipse/task/preferences/DroolsTaskConstants.java
   labs/jbossrules/trunk/drools-eclipse/drools-eclipse-task/src/main/java/org/drools/eclipse/task/preferences/DroolsTaskPreferencePage.java
Modified:
   labs/jbossrules/trunk/drools-eclipse/drools-eclipse-task/src/main/java/org/drools/eclipse/task/Activator.java
   labs/jbossrules/trunk/drools-eclipse/drools-eclipse-task/src/main/java/org/drools/eclipse/task/views/TaskView.java
Log:
JBRULES-1757: Add WS-HT service views to IDE
 - added life cycle methods

Modified: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-task/src/main/java/org/drools/eclipse/task/Activator.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-task/src/main/java/org/drools/eclipse/task/Activator.java	2008-09-04 14:35:21 UTC (rev 22396)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-task/src/main/java/org/drools/eclipse/task/Activator.java	2008-09-04 14:35:48 UTC (rev 22397)
@@ -1,5 +1,7 @@
 package org.drools.eclipse.task;
 
+import org.drools.eclipse.task.preferences.DroolsTaskConstants;
+import org.eclipse.jface.preference.IPreferenceStore;
 import org.eclipse.jface.resource.ImageDescriptor;
 import org.eclipse.ui.plugin.AbstractUIPlugin;
 import org.osgi.framework.BundleContext;
@@ -15,62 +17,31 @@
 	// The shared instance
 	private static Activator plugin;
 	
-//    private EntityManagerFactory emf;
-//    private EntityManager em;
-//    private MinaTaskServer server;
-	
 	public Activator() {
 	}
 
 	public void start(BundleContext context) throws Exception {
 		super.start(context);
 		plugin = this;
-//		try {
-//			emf = Persistence.createEntityManagerFactory("org.drools.task");
-//	        em = emf.createEntityManager();
-//	        TaskService taskService = new TaskService(em);
-//			server = new MinaTaskServer(taskService);
-//	        Thread thread = new Thread(server);
-//	        thread.start();
-//	        Thread.sleep(1000);
-//	        User user = new User("John Doe");
-//	        taskService.addUser(user);
-//	        System.out.println("Added user " + user.getId());
-//		} catch (Throwable t) {
-//			getLog().log(new Status(
-//				IStatus.ERROR, getBundle().getSymbolicName(),
-//				120, "Internal error in Drools Task Plugin", t));
-//		}
 	}
 
 	public void stop(BundleContext context) throws Exception {
 		plugin = null;
 		super.stop(context);
-//		if (em != null) {
-//			em.close();
-//		}
-//		if (emf != null) {
-//			emf.close();
-//		}
 	}
 
-	/**
-	 * Returns the shared instance
-	 *
-	 * @return the shared instance
-	 */
 	public static Activator getDefault() {
 		return plugin;
 	}
 
-	/**
-	 * Returns an image descriptor for the image file at the given
-	 * plug-in relative path
-	 *
-	 * @param path the path
-	 * @return the image descriptor
-	 */
 	public static ImageDescriptor getImageDescriptor(String path) {
 		return imageDescriptorFromPlugin(PLUGIN_ID, path);
 	}
+	
+    protected void initializeDefaultPreferences(IPreferenceStore store) {
+        store.setDefault( DroolsTaskConstants.SERVER_IP_ADDRESS, "127.0.0.1");
+        store.setDefault( DroolsTaskConstants.SERVER_PORT, 9123 );
+        store.setDefault( DroolsTaskConstants.LANGUAGE, "en-UK" );
+    }
+
 }

Added: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-task/src/main/java/org/drools/eclipse/task/preferences/DroolsTaskConstants.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-task/src/main/java/org/drools/eclipse/task/preferences/DroolsTaskConstants.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-task/src/main/java/org/drools/eclipse/task/preferences/DroolsTaskConstants.java	2008-09-04 14:35:48 UTC (rev 22397)
@@ -0,0 +1,9 @@
+package org.drools.eclipse.task.preferences;
+
+public interface DroolsTaskConstants {
+	
+	String SERVER_IP_ADDRESS = "ServerIPAddress";
+	String SERVER_PORT = "ServerPort";
+	String LANGUAGE = "Language";
+
+}

Added: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-task/src/main/java/org/drools/eclipse/task/preferences/DroolsTaskPreferencePage.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-task/src/main/java/org/drools/eclipse/task/preferences/DroolsTaskPreferencePage.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-task/src/main/java/org/drools/eclipse/task/preferences/DroolsTaskPreferencePage.java	2008-09-04 14:35:48 UTC (rev 22397)
@@ -0,0 +1,86 @@
+package org.drools.eclipse.task.preferences;
+
+import org.drools.eclipse.task.Activator;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.preference.IPreferenceStore;
+import org.eclipse.jface.preference.PreferencePage;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.ui.IWorkbench;
+import org.eclipse.ui.IWorkbenchPreferencePage;
+
+public class DroolsTaskPreferencePage extends PreferencePage implements IWorkbenchPreferencePage {
+
+	private Text ipAddressText;
+	private Text portText;
+	private Text languageText;
+	
+	protected Control createContents(Composite parent) {
+		ipAddressText = createText(parent, "IP address");
+		portText = createText(parent, "Port");
+		languageText = createText(parent, "Language");
+		initializeValues();
+		return new Composite(parent, SWT.NULL);
+	}
+
+	private Text createText(Composite group, String labelText) {
+		Label label = new Label(group, SWT.NONE);
+		label.setText(labelText);
+        Text text = new Text(group, SWT.NONE);
+        return text;
+    }
+	
+	protected IPreferenceStore doGetPreferenceStore() {
+        return Activator.getDefault().getPreferenceStore();
+    }
+	
+	private void initializeDefaults() {
+        IPreferenceStore store = getPreferenceStore();
+        ipAddressText.setText(store.getDefaultString(DroolsTaskConstants.SERVER_IP_ADDRESS));
+        portText.setText(store.getDefaultInt(DroolsTaskConstants.SERVER_PORT) + "");
+        languageText.setText(store.getDefaultString(DroolsTaskConstants.LANGUAGE));
+    }
+
+	private void initializeValues() {
+        IPreferenceStore store = getPreferenceStore();
+        ipAddressText.setText(store.getString(DroolsTaskConstants.SERVER_IP_ADDRESS));
+        portText.setText(store.getInt(DroolsTaskConstants.SERVER_PORT) + "");
+        languageText.setText(store.getString(DroolsTaskConstants.LANGUAGE));
+    }
+
+	protected void performDefaults() {
+        super.performDefaults();
+        initializeDefaults();
+    }
+
+	public boolean performOk() {
+        storeValues();
+        Activator.getDefault().savePluginPreferences();
+        return true;
+    }
+	
+	private void storeValues() {
+		try {
+			Integer port = new Integer(portText.getText());
+	        IPreferenceStore store = getPreferenceStore();
+	        store.setValue(DroolsTaskConstants.SERVER_IP_ADDRESS, ipAddressText.getText());
+	        store.setValue(DroolsTaskConstants.SERVER_PORT, port);
+	        store.setValue(DroolsTaskConstants.LANGUAGE, languageText.getText());
+		} catch (NumberFormatException e) {
+			showMessage("Could not convert port, should be an integer value.");
+		}
+    }
+
+	public void init(IWorkbench workbench) {
+		// do nothing
+	}
+
+	private void showMessage(String message) {
+		MessageDialog.openInformation(
+			getControl().getShell(), "Task View", message);
+	}
+
+}

Modified: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-task/src/main/java/org/drools/eclipse/task/views/TaskView.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-task/src/main/java/org/drools/eclipse/task/views/TaskView.java	2008-09-04 14:35:21 UTC (rev 22396)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-task/src/main/java/org/drools/eclipse/task/views/TaskView.java	2008-09-04 14:35:48 UTC (rev 22397)
@@ -7,6 +7,8 @@
 import java.util.Map;
 
 import org.apache.mina.transport.socket.nio.NioSocketConnector;
+import org.drools.eclipse.task.Activator;
+import org.drools.eclipse.task.preferences.DroolsTaskConstants;
 import org.drools.task.Status;
 import org.drools.task.User;
 import org.drools.task.query.TaskSummary;
@@ -20,18 +22,20 @@
 import org.eclipse.jface.action.MenuManager;
 import org.eclipse.jface.action.Separator;
 import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.jface.viewers.DoubleClickEvent;
-import org.eclipse.jface.viewers.IDoubleClickListener;
+import org.eclipse.jface.preference.IPreferenceStore;
+import org.eclipse.jface.util.IPropertyChangeListener;
+import org.eclipse.jface.util.PropertyChangeEvent;
 import org.eclipse.jface.viewers.ISelection;
 import org.eclipse.jface.viewers.IStructuredContentProvider;
-import org.eclipse.jface.viewers.IStructuredSelection;
 import org.eclipse.jface.viewers.ITableLabelProvider;
 import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.jface.viewers.StructuredSelection;
 import org.eclipse.jface.viewers.TableViewer;
 import org.eclipse.jface.viewers.Viewer;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.events.SelectionAdapter;
 import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
 import org.eclipse.swt.graphics.Image;
 import org.eclipse.swt.layout.GridData;
 import org.eclipse.swt.layout.GridLayout;
@@ -79,12 +83,21 @@
 	
 	private String ipAddress = "127.0.0.1";
 	private int port = 9123;
+	private String language = "en-UK";
 	
 	private Text userNameText;
 	private Table table;
 	private TableViewer tableViewer;
 	private Action refreshAction;
-	private Action doubleClickAction;
+	private Button claimButton;
+	private Button startButton;
+	private Button stopButton;
+	private Button releaseButton;
+	private Button suspendButton;
+	private Button resumeButton;
+	private Button skipButton;
+	private Button completeButton;
+	private Button failButton;
 
 	private class ViewContentProvider implements IStructuredContentProvider {
 		public void inputChanged(Viewer v, Object oldInput, Object newInput) {
@@ -134,23 +147,41 @@
 		}
 	}
 	
+	public TaskView() {
+		IPreferenceStore preferenceStore = Activator.getDefault().getPreferenceStore();
+    	ipAddress = preferenceStore.getString(DroolsTaskConstants.SERVER_IP_ADDRESS);
+    	port = preferenceStore.getInt(DroolsTaskConstants.SERVER_PORT);
+    	language = preferenceStore.getString(DroolsTaskConstants.LANGUAGE);
+    	preferenceStore.addPropertyChangeListener(new IPropertyChangeListener() {
+			public void propertyChange(PropertyChangeEvent event) {
+				if (DroolsTaskConstants.SERVER_IP_ADDRESS.equals(event.getProperty())) {
+					ipAddress = (String) event.getNewValue();
+				} else if (DroolsTaskConstants.SERVER_PORT.equals(event.getProperty())) {
+					port = (Integer) event.getNewValue();
+				} else if (DroolsTaskConstants.LANGUAGE.equals(event.getProperty())) {
+					language = (String) event.getNewValue();
+				}
+			}
+    	});
+	}
+	
 	public void createPartControl(Composite parent) {
-		parent.setLayout(new GridLayout(4, false));
+		parent.setLayout(new GridLayout(10, false));
 		Label userNameLabel = new Label(parent, SWT.NONE);
-		userNameLabel.setText("UserName");
+		userNameLabel.setText("UserId");
 		userNameText = new Text(parent, SWT.NONE);
 		GridData layoutData = new GridData();
-		layoutData.horizontalSpan = 2;
+		layoutData.horizontalSpan = 8;
 		layoutData.grabExcessHorizontalSpace = true;
 		layoutData.horizontalAlignment = GridData.FILL_HORIZONTAL;
-		Button add = new Button(parent, SWT.PUSH | SWT.CENTER);
-		add.setText("Refresh");
-		add.addSelectionListener(new SelectionAdapter() {
+		userNameText.setLayoutData(layoutData);
+		Button refresh = new Button(parent, SWT.PUSH | SWT.CENTER);
+		refresh.setText("Refresh");
+		refresh.addSelectionListener(new SelectionAdapter() {
 			public void widgetSelected(SelectionEvent e) {
 				refresh();
 			}
 		});
-		userNameText.setLayoutData(layoutData);
 		createTable(parent);
 		createTableViewer();
 		tableViewer.setContentProvider(new ViewContentProvider());
@@ -159,7 +190,6 @@
 		createButtons(parent);
 		makeActions();
 		hookContextMenu();
-		hookDoubleClickAction();
 		contributeToActionBars();
 	}
 
@@ -172,7 +202,7 @@
 		table = new Table(parent, style);
 		GridData gridData = new GridData(GridData.FILL_BOTH);
 		gridData.grabExcessVerticalSpace = true;
-		gridData.horizontalSpan = 4;
+		gridData.horizontalSpan = 10;
 		table.setLayoutData(gridData);		
 		table.setLinesVisible(true);
 		table.setHeaderVisible(true);
@@ -201,17 +231,103 @@
 	}
 	
 	private void createButtons(Composite parent) {
-		Button add = new Button(parent, SWT.PUSH | SWT.CENTER);
-		add.setText("Refresh");
-
-		GridData gridData = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING);
-		gridData.widthHint = 80;
-		add.setLayoutData(gridData);
-		add.addSelectionListener(new SelectionAdapter() {
+		claimButton = new Button(parent, SWT.PUSH | SWT.CENTER);
+		claimButton.setText("Claim");
+		claimButton.addSelectionListener(new SelectionAdapter() {
 			public void widgetSelected(SelectionEvent e) {
-				refresh();
+				claim();
 			}
 		});
+		claimButton.setEnabled(false);
+		startButton = new Button(parent, SWT.PUSH | SWT.CENTER);
+		startButton.setText("Start");
+		startButton.addSelectionListener(new SelectionAdapter() {
+			public void widgetSelected(SelectionEvent e) {
+				start();
+			}
+		});
+		startButton.setEnabled(false);
+		stopButton = new Button(parent, SWT.PUSH | SWT.CENTER);
+		stopButton.setText("Stop");
+		stopButton.addSelectionListener(new SelectionAdapter() {
+			public void widgetSelected(SelectionEvent e) {
+				stop();
+			}
+		});
+		stopButton.setEnabled(false);
+		releaseButton = new Button(parent, SWT.PUSH | SWT.CENTER);
+		releaseButton.setText("Release");
+		releaseButton.addSelectionListener(new SelectionAdapter() {
+			public void widgetSelected(SelectionEvent e) {
+				release();
+			}
+		});
+		releaseButton.setEnabled(false);
+		suspendButton = new Button(parent, SWT.PUSH | SWT.CENTER);
+		suspendButton.setText("Suspend");
+		suspendButton.addSelectionListener(new SelectionAdapter() {
+			public void widgetSelected(SelectionEvent e) {
+				suspend();
+			}
+		});
+		suspendButton.setEnabled(false);
+		resumeButton = new Button(parent, SWT.PUSH | SWT.CENTER);
+		resumeButton.setText("Resume");
+		resumeButton.addSelectionListener(new SelectionAdapter() {
+			public void widgetSelected(SelectionEvent e) {
+				resume();
+			}
+		});
+		resumeButton.setEnabled(false);
+		skipButton = new Button(parent, SWT.PUSH | SWT.CENTER);
+		skipButton.setText("Skip");
+		skipButton.addSelectionListener(new SelectionAdapter() {
+			public void widgetSelected(SelectionEvent e) {
+				skip();
+			}
+		});
+		skipButton.setEnabled(false);
+		completeButton = new Button(parent, SWT.PUSH | SWT.CENTER);
+		completeButton.setText("Complete");
+		completeButton.addSelectionListener(new SelectionAdapter() {
+			public void widgetSelected(SelectionEvent e) {
+				complete();
+			}
+		});
+		completeButton.setEnabled(false);
+		failButton = new Button(parent, SWT.PUSH | SWT.CENTER);
+		failButton.setText("Fail");
+		failButton.addSelectionListener(new SelectionAdapter() {
+			public void widgetSelected(SelectionEvent e) {
+				fail();
+			}
+		});
+		failButton.setEnabled(false);
+		GridData layoutData = new GridData();
+		layoutData.horizontalSpan = 2;
+		layoutData.horizontalAlignment = SWT.BEGINNING;
+		failButton.setLayoutData(layoutData);
+		table.addSelectionListener(new SelectionListener() {
+			public void widgetDefaultSelected(SelectionEvent e) {
+				System.out.println(e);
+			}
+			public void widgetSelected(SelectionEvent e) {
+				boolean selected = table.getSelectionCount() == 1;
+				TaskSummary task = getSelectedTask();
+				claimButton.setEnabled(selected && Status.Created.equals(task.getStatus()));
+				startButton.setEnabled(selected && 
+					(Status.Ready.equals(task.getStatus()) || Status.Reserved.equals(task.getStatus())));
+				stopButton.setEnabled(selected && Status.InProgress.equals(task.getStatus()));
+				releaseButton.setEnabled(selected && 
+					(Status.Reserved.equals(task.getStatus()) || Status.InProgress.equals(task.getStatus())));
+				suspendButton.setEnabled(selected && 
+					(Status.Ready.equals(task.getStatus()) || Status.Reserved.equals(task.getStatus()) || Status.InProgress.equals(task.getStatus())));
+				resumeButton.setEnabled(selected && Status.Suspended.equals(task.getStatus()));
+				skipButton.setEnabled(selected && !Status.Completed.equals(task.getStatus()) && !Status.Failed.equals(task.getStatus()));
+				completeButton.setEnabled(selected && Status.InProgress.equals(task.getStatus()));
+				failButton.setEnabled(selected && Status.InProgress.equals(task.getStatus()));
+			}
+		});
 	}
 
 	private void hookContextMenu() {
@@ -256,23 +372,8 @@
 		refreshAction.setToolTipText("Refresh the task list");
 		refreshAction.setImageDescriptor(PlatformUI.getWorkbench().getSharedImages().
 			getImageDescriptor(ISharedImages.IMG_OBJS_INFO_TSK));
-		
-		doubleClickAction = new Action() {
-			public void run() {
-				ISelection selection = tableViewer.getSelection();
-				Object obj = ((IStructuredSelection)selection).getFirstElement();
-				showMessage("Double-click detected on " + obj.toString());
-			}
-		};
 	}
 
-	private void hookDoubleClickAction() {
-		tableViewer.addDoubleClickListener(new IDoubleClickListener() {
-			public void doubleClick(DoubleClickEvent event) {
-				doubleClickAction.run();
-			}
-		});
-	}
 	private void showMessage(String message) {
 		MessageDialog.openInformation(
 			tableViewer.getControl().getShell(), "Task View", message);
@@ -283,6 +384,216 @@
 	}
 	
 	private void refresh() {
+		Long userId = getUserId();
+		if (userId == null) {
+			return;
+		}
+		
+		MinaTaskClient client = getTaskClient();
+		if (client == null) {
+			return;
+		}
+		
+		BlockingTaskSummaryResponseHandler responseHandler = new BlockingTaskSummaryResponseHandler();
+		client.getTasksAssignedAsPotentialOwner(userId, language, responseHandler);
+        List<TaskSummary> tasks = responseHandler.getResults();
+        client.disconnect();
+        
+        tableViewer.setInput(tasks);
+        tableViewer.refresh();
+        tableViewer.setSelection(null);
+	}
+	
+	public void claim() {
+		MinaTaskClient client = getTaskClient();
+		if (client == null) {
+			return;
+		}
+		
+		Long userId = getUserId();
+		if (userId == null) {
+			return;
+		}
+		
+		TaskSummary taskSummary = getSelectedTask();
+		if (taskSummary == null) {
+			return;
+		}
+		
+		client.claim(taskSummary.getId(), userId);
+        client.disconnect();
+        refresh();
+	}
+	
+	public void start() {
+		MinaTaskClient client = getTaskClient();
+		if (client == null) {
+			return;
+		}
+		
+		Long userId = getUserId();
+		if (userId == null) {
+			return;
+		}
+		
+		TaskSummary taskSummary = getSelectedTask();
+		if (taskSummary == null) {
+			return;
+		}
+		
+		client.start(taskSummary.getId(), userId);
+        client.disconnect();
+        refresh();
+	}
+	
+	public void stop() {
+		MinaTaskClient client = getTaskClient();
+		if (client == null) {
+			return;
+		}
+		
+		Long userId = getUserId();
+		if (userId == null) {
+			return;
+		}
+		
+		TaskSummary taskSummary = getSelectedTask();
+		if (taskSummary == null) {
+			return;
+		}
+		
+		client.stop(taskSummary.getId(), userId);
+        client.disconnect();
+        refresh();
+	}
+	
+	public void release() {
+		MinaTaskClient client = getTaskClient();
+		if (client == null) {
+			return;
+		}
+		
+		Long userId = getUserId();
+		if (userId == null) {
+			return;
+		}
+		
+		TaskSummary taskSummary = getSelectedTask();
+		if (taskSummary == null) {
+			return;
+		}
+		
+		client.release(taskSummary.getId(), userId);
+        client.disconnect();
+        refresh();
+	}
+	
+	public void suspend() {
+		MinaTaskClient client = getTaskClient();
+		if (client == null) {
+			return;
+		}
+		
+		Long userId = getUserId();
+		if (userId == null) {
+			return;
+		}
+		
+		TaskSummary taskSummary = getSelectedTask();
+		if (taskSummary == null) {
+			return;
+		}
+		
+		client.suspend(taskSummary.getId(), userId);
+        client.disconnect();
+        refresh();
+	}
+	
+	public void resume() {
+		MinaTaskClient client = getTaskClient();
+		if (client == null) {
+			return;
+		}
+		
+		Long userId = getUserId();
+		if (userId == null) {
+			return;
+		}
+		
+		TaskSummary taskSummary = getSelectedTask();
+		if (taskSummary == null) {
+			return;
+		}
+		
+		client.resume(taskSummary.getId(), userId);
+        client.disconnect();
+        refresh();
+	}
+	
+	public void skip() {
+		MinaTaskClient client = getTaskClient();
+		if (client == null) {
+			return;
+		}
+		
+		Long userId = getUserId();
+		if (userId == null) {
+			return;
+		}
+		
+		TaskSummary taskSummary = getSelectedTask();
+		if (taskSummary == null) {
+			return;
+		}
+		
+		client.skip(taskSummary.getId(), userId);
+        client.disconnect();
+        refresh();
+	}
+	
+	public void complete() {
+		MinaTaskClient client = getTaskClient();
+		if (client == null) {
+			return;
+		}
+		
+		Long userId = getUserId();
+		if (userId == null) {
+			return;
+		}
+		
+		TaskSummary taskSummary = getSelectedTask();
+		if (taskSummary == null) {
+			return;
+		}
+		
+		client.complete(taskSummary.getId(), userId);
+        client.disconnect();
+        refresh();
+	}
+	
+	public void fail() {
+		MinaTaskClient client = getTaskClient();
+		if (client == null) {
+			return;
+		}
+		
+		Long userId = getUserId();
+		if (userId == null) {
+			return;
+		}
+		
+		TaskSummary taskSummary = getSelectedTask();
+		if (taskSummary == null) {
+			return;
+		}
+		
+		client.fail(taskSummary.getId(), userId);
+        client.disconnect();
+        refresh();
+	}
+	
+	private MinaTaskClient getTaskClient() {
 		MinaTaskClient client = new MinaTaskClient(
 			"org.drools.eclipse.task.views.TaskView", new TaskClientHandler());
 		NioSocketConnector connector = new NioSocketConnector();
@@ -290,31 +601,33 @@
 		boolean connected = client.connect(connector, address);
 		if (!connected) {
 			showMessage("Could not connect to task server: " + ipAddress + " [port " + port + "]");
-			return;
+			return null;
 		}
-		
-		BlockingTaskSummaryResponseHandler responseHandler = new BlockingTaskSummaryResponseHandler();
+		return client;
+	}
+	
+	private Long getUserId() {
 		Long userId = null;
 		try {
 			userId = new Long(userNameText.getText());
 		} catch (NumberFormatException e) {
 			showMessage("Could not convert user id, should be a long value.");
-			return;
+			return null;
 		}
-        client.getTasksAssignedAsPotentialOwner(userId, "en-UK", responseHandler);
-        List<TaskSummary> tasks = responseHandler.getResults();
-        client.disconnect();
-        
-        System.out.println("<<<<<< Tasks");
-        for (TaskSummary task: tasks) {
-        	System.out.println(task);
-        }
-        System.out.println("Tasks >>>>>>");
-        
-        tableViewer.setInput(tasks);
-        tableViewer.refresh();
+		return userId;
 	}
 	
+	private TaskSummary getSelectedTask() {
+		ISelection selection = tableViewer.getSelection();
+		if (selection instanceof StructuredSelection) {
+			Object selected = ((StructuredSelection) selection).getFirstElement();
+			if (selected instanceof TaskSummary) {
+				return (TaskSummary) selected;
+			}
+		}
+		return null;
+	}
+	
 	private class BlockingTaskSummaryResponseHandler implements TaskSummaryResponseHandler {
         private volatile List<TaskSummary> results;
 		public void execute(List<TaskSummary> results) {




More information about the jboss-svn-commits mailing list