Search in sources :

Example 6 with Task

use of org.vcell.workflow.Task in project vcell by virtualcell.

the class WorkflowObjectsTableModel method getValue.

private String getValue(WorkflowObject workflowObject) {
    if (workflowObject instanceof Task) {
        return "";
    } else {
        Object data = null;
        Class dataType = null;
        if (workflowObject instanceof WorkflowDataSource) {
            WorkflowDataSource dataHolder = (WorkflowDataSource) workflowObject;
            WorkflowDataSource dataSource = taskContext.getWorkflow().getDataSource((DataObject) dataHolder);
            data = taskContext.getRepository().getData(dataSource);
            dataType = dataHolder.getType();
        } else if (workflowObject instanceof DataInput) {
            DataInput dataInput = (DataInput) workflowObject;
            data = taskContext.getData(dataInput);
            dataType = dataInput.getType();
        }
        if (data instanceof RowColumnResultSet) {
            RowColumnResultSet rc = (RowColumnResultSet) data;
            int N = rc.getColumnDescriptionsCount();
            StringBuffer buffer = new StringBuffer(rc.getRowCount() + " rows of " + N + " {");
            int MAX = 3;
            for (int i = 0; i < N; i++) {
                buffer.append("\"" + rc.getColumnDescriptions(i).getDisplayName() + "\"");
                if (i >= MAX - 1) {
                    buffer.append(", ...");
                    break;
                }
                if (i < N - 1) {
                    buffer.append(", ");
                }
            }
            buffer.append("}");
            return buffer.toString();
        } else if (data instanceof String) {
            return "\"" + (String) data + "\"";
        } else if (data instanceof ROI) {
            return "ROI \"" + ((ROI) data).getROIName() + "\"";
        } else if (data instanceof ROI[]) {
            ROI[] rois = (ROI[]) data;
            int N = rois.length;
            int MAX = 3;
            StringBuffer buffer = new StringBuffer("ROI[" + N + "] { ");
            for (int i = 0; i < N; i++) {
                buffer.append("\"" + rois[i].getROIName() + "\"");
                if (i >= MAX - 1) {
                    buffer.append(", ...");
                    break;
                }
                if (i < N - 1) {
                    buffer.append(", ");
                }
            }
            buffer.append("}");
            return buffer.toString();
        } else if (data instanceof Image) {
            Image image = (Image) data;
            return image.getClass().getSimpleName() + " " + image.getISize().toString();
        } else if (data instanceof ImageTimeSeries) {
            ImageTimeSeries ts = (ImageTimeSeries) data;
            int N = ts.getSizeT();
            double[] times = ts.getImageTimeStamps();
            return ts.getType().getSimpleName() + "[" + N + "] " + ts.getISize() + " times=[" + times[0] + "," + times[N - 1] + "]";
        } else if (data != null) {
            return data.toString();
        } else {
            return "null " + dataType.getSimpleName();
        }
    }
}
Also used : Task(org.vcell.workflow.Task) Image(cbit.vcell.VirtualMicroscopy.Image) ROI(cbit.vcell.VirtualMicroscopy.ROI) WorkflowDataSource(org.vcell.workflow.WorkflowDataSource) DataInput(org.vcell.workflow.DataInput) DataObject(org.vcell.workflow.DataObject) WorkflowObject(org.vcell.workflow.WorkflowObject) RowColumnResultSet(cbit.vcell.math.RowColumnResultSet) ImageTimeSeries(org.vcell.vmicro.workflow.data.ImageTimeSeries)

Example 7 with Task

use of org.vcell.workflow.Task in project vcell by virtualcell.

the class WorkflowObjectsTableModel method setTaskContext.

public void setTaskContext(TaskContext taskContext) {
    if (taskContext != null) {
        Workflow workflow = taskContext.getWorkflow();
        workflow.removePropertyChangeListener(this);
        for (WorkflowParameter<? extends Object> dataHolder : workflow.getParameters()) {
            dataHolder.removePropertyChangeListener(this);
        }
        for (Task task : workflow.getTasks()) {
            task.removePropertyChangeListener(this);
        }
    }
    this.taskContext = taskContext;
    if (this.taskContext != null) {
        Workflow workflow = this.taskContext.getWorkflow();
        workflow.addPropertyChangeListener(this);
        for (WorkflowParameter<? extends Object> dataHolder : workflow.getParameters()) {
            dataHolder.addPropertyChangeListener(this);
        }
        for (Task task : workflow.getTasks()) {
            task.addPropertyChangeListener(this);
        }
    }
    refreshData();
}
Also used : Task(org.vcell.workflow.Task) Workflow(org.vcell.workflow.Workflow)

Example 8 with Task

use of org.vcell.workflow.Task in project vcell by virtualcell.

the class WorkflowObjectsPanel method tableSelectionChanged.

protected void tableSelectionChanged() {
    int[] rows = parametersFunctionsTable.getSelectedRows();
    if (rows == null || rows.length == 0) {
        showButton.setEnabled(false);
        deleteButton.setEnabled(false);
        return;
    }
    boolean bAllTasks = true;
    boolean bAllDisplable = true;
    for (int r : rows) {
        if (r < parametersFunctionsTableModel.getRowCount()) {
            WorkflowObject workflowObject = parametersFunctionsTableModel.getValueAt(r);
            if (!(workflowObject instanceof Task)) {
                bAllTasks = false;
            }
            if (!hasDisplayData(taskContext, workflowObject)) {
                bAllDisplable = false;
            }
        }
    }
    deleteButton.setEnabled(bAllTasks);
    showButton.setEnabled(bAllDisplable);
}
Also used : Task(org.vcell.workflow.Task) WorkflowObject(org.vcell.workflow.WorkflowObject)

Example 9 with Task

use of org.vcell.workflow.Task in project vcell by virtualcell.

the class WorkflowJGraphProxy method createGraphJGraphX.

public WorkflowGraph createGraphJGraphX() {
    graph = new WorkflowGraph();
    graph.getModel().beginUpdate();
    graph.setCellsEditable(false);
    graph.setCellsCloneable(false);
    graph.setCellsMovable(true);
    graph.setCellsResizable(false);
    graph.setDropEnabled(false);
    Object parent = graph.getDefaultParent();
    try {
        // 
        // make subgraph for each task ... alot space from [-1:1] in x and center in y
        // 
        int scale = 100;
        int taskPosX = 20;
        int taskPosXDelta = 240;
        int taskPosY = scale / 2;
        HashMap<Task, WorkflowObjectCell> taskMap = new HashMap<Task, WorkflowObjectCell>();
        for (Task task : context.getWorkflow().getTasks()) {
            WorkflowObjectCell taskNode = createGenericCell(task);
            taskNode.getGeometry().setX(task.getDiagramStyle().getX(taskPosX));
            taskNode.getGeometry().setY(task.getDiagramStyle().getY(taskPosY));
            taskMap.put(task, taskNode);
            graph.addCell(taskNode);
            taskPosX += taskPosXDelta;
        }
        // 
        for (Task task : context.getWorkflow().getTasks()) {
            for (DataInput<? extends Object> input : task.getInputs()) {
                DataObject<? extends Object> dataSource = context.getWorkflow().getConnectorSource(input);
                if (dataSource != null) {
                    WorkflowObjectCell inputTaskNode = taskMap.get(input.getParent());
                    if (inputTaskNode != null) {
                        WorkflowObjectCell inputNode = null;
                        for (int i = 0; i < inputTaskNode.getChildCount(); i++) {
                            if (inputTaskNode.getChildAt(i).getValue().equals(input.getName())) {
                                inputNode = (WorkflowObjectCell) inputTaskNode.getChildAt(i);
                            }
                        }
                        if (dataSource instanceof DataOutput) {
                            DataOutput dataHolder = (DataOutput) dataSource;
                            Object dataHolderParent = dataHolder.getParent();
                            if (dataHolderParent instanceof Task) {
                                WorkflowObjectCell outputTask = taskMap.get((Task) dataHolderParent);
                                WorkflowObjectCell holderNode = null;
                                for (int i = 0; i < outputTask.getChildCount(); i++) {
                                    if (outputTask.getChildAt(i).getValue().equals(dataHolder.getName())) {
                                        holderNode = (WorkflowObjectCell) outputTask.getChildAt(i);
                                    }
                                }
                                if (holderNode != null) {
                                    // an output of another task
                                    graph.insertEdge(parent, null, null, holderNode, inputNode);
                                }
                            }
                        }
                    }
                }
            }
        }
    } finally {
        graph.getModel().endUpdate();
    }
    graph.addListener(null, graphEventListener);
    // graph.getModel().addListener(mxEvent.CHANGE, getEventListener());
    return graph;
}
Also used : DataOutput(org.vcell.workflow.DataOutput) Task(org.vcell.workflow.Task) HashMap(java.util.HashMap) com.mxgraph.util.mxEventObject(com.mxgraph.util.mxEventObject) WorkflowObject(org.vcell.workflow.WorkflowObject) DataObject(org.vcell.workflow.DataObject) com.mxgraph.util.mxPoint(com.mxgraph.util.mxPoint)

Example 10 with Task

use of org.vcell.workflow.Task in project vcell by virtualcell.

the class WorkflowJGraphProxy method removeCells.

private void removeCells(mxEventObject event) {
    // remove an existing connection
    Object[] cells = (Object[]) event.getProperty("cells");
    // remove edges first
    for (Object cellObject : cells) {
        if (cellObject instanceof mxCell) {
            mxCell cell = (mxCell) cellObject;
            if (cell.isEdge()) {
                mxICell source = cell.getSource();
                mxICell target = cell.getTarget();
                if ((source instanceof WorkflowObjectCell) && (source instanceof WorkflowObjectCell)) {
                    WorkflowObject workflowSourceObject = ((WorkflowObjectCell) source).workflowObject;
                    WorkflowObject workflowTargetObject = ((WorkflowObjectCell) target).workflowObject;
                    if (workflowSourceObject instanceof DataOutput && workflowTargetObject instanceof DataInput) {
                        DataOutput output = (DataOutput) workflowSourceObject;
                        DataInput input = (DataInput) workflowTargetObject;
                        if (context.getWorkflow().getConnectorSource(input) == output) {
                            context.getWorkflow().removeConnector(output, input);
                            System.out.println("removed edge from " + workflowSourceObject.getPath() + " to " + workflowTargetObject.getPath());
                        } else {
                            System.out.println("can't remove edge, edge from " + output.getPath() + " to " + input.getPath() + " not found in workflow");
                        }
                    } else {
                        System.out.println("can't remove edge, edge from " + source.getId() + " to " + target.getId() + " not found in workflow");
                    }
                }
            }
        }
    }
    // remove tasks next
    for (Object cellObject : cells) {
        if (cellObject instanceof mxCell) {
            mxCell cell = (mxCell) cellObject;
            if (!cell.isEdge() && cell instanceof WorkflowObjectCell) {
                WorkflowObject workflowObject = ((WorkflowObjectCell) cell).workflowObject;
                if (workflowObject instanceof Task) {
                    context.getWorkflow().removeTask((Task) workflowObject);
                    System.out.println("removed task " + workflowObject.getPath());
                } else {
                    System.out.println("can't remove non-edge cell " + cell.getId() + " not a task in this workflow");
                }
            }
        }
    }
}
Also used : DataInput(org.vcell.workflow.DataInput) com.mxgraph.model.mxICell(com.mxgraph.model.mxICell) DataOutput(org.vcell.workflow.DataOutput) Task(org.vcell.workflow.Task) com.mxgraph.model.mxCell(com.mxgraph.model.mxCell) com.mxgraph.util.mxEventObject(com.mxgraph.util.mxEventObject) WorkflowObject(org.vcell.workflow.WorkflowObject) DataObject(org.vcell.workflow.DataObject) WorkflowObject(org.vcell.workflow.WorkflowObject)

Aggregations

Task (org.vcell.workflow.Task)10 WorkflowObject (org.vcell.workflow.WorkflowObject)7 DataOutput (org.vcell.workflow.DataOutput)6 DataInput (org.vcell.workflow.DataInput)5 DataObject (org.vcell.workflow.DataObject)5 com.mxgraph.util.mxEventObject (com.mxgraph.util.mxEventObject)3 Workflow (org.vcell.workflow.Workflow)3 com.mxgraph.model.mxCell (com.mxgraph.model.mxCell)2 com.mxgraph.model.mxICell (com.mxgraph.model.mxICell)2 ContainerShape (cbit.gui.graph.ContainerShape)1 GraphEvent (cbit.gui.graph.GraphEvent)1 SimpleContainerShape (cbit.gui.graph.SimpleContainerShape)1 Image (cbit.vcell.VirtualMicroscopy.Image)1 ROI (cbit.vcell.VirtualMicroscopy.ROI)1 RowColumnResultSet (cbit.vcell.math.RowColumnResultSet)1 com.mxgraph.util.mxPoint (com.mxgraph.util.mxPoint)1 File (java.io.File)1 ArrayList (java.util.ArrayList)1 HashMap (java.util.HashMap)1 JFrame (javax.swing.JFrame)1