Update of /cvsroot/taverna/taverna1.0/scufl/scufl-ui/src/main/java/org/embl/ebi/escience/scuflui/processoractions In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv760/scufl/scufl-ui/src/main/java/org/embl/ebi/escience/scuflui/processoractions Modified Files: SetBoringAction.java ProcessorActionRegistry.java AbstractProcessorAction.java Removed Files: ProcessorActionSPI.java Log Message: Major refactoring for 1.5 release and introduction of new UI. Commit because I'm worried about losing a week's worth of nasty work if I leave it on the discs on my machine here. Index: AbstractProcessorAction.java =================================================================== RCS file: /cvsroot/taverna/taverna1.0/scufl/scufl-ui/src/main/java/org/embl/ebi/escience/scuflui/processoractions/AbstractProcessorAction.java,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** AbstractProcessorAction.java 10 Jul 2006 14:11:45 -0000 1.2 --- AbstractProcessorAction.java 28 Sep 2006 16:36:54 -0000 1.3 *************** *** 1,105 **** ! /** ! * This file is a component of the Taverna project, ! * and is licensed under the GNU LGPL. ! * Copyright Tom Oinn, EMBL-EBI ! */ ! package org.embl.ebi.escience.scuflui.processoractions; ! ! import java.awt.BorderLayout; ! import java.awt.Component; ! import java.awt.Dimension; ! import java.awt.event.ActionEvent; ! import java.awt.event.ActionListener; ! ! import javax.swing.ImageIcon; ! import javax.swing.JComponent; ! import javax.swing.JPanel; ! ! import org.embl.ebi.escience.scufl.Processor; ! import org.embl.ebi.escience.scufl.ScuflModel; ! import org.embl.ebi.escience.scuflui.ScuflUIComponent; ! import org.embl.ebi.escience.scuflui.UIUtils; ! ! /** ! * A simple abstract implementation of the ProcessorActionSPI ! * which allows the extending class to simply specify a JComponent ! * to be created in a standard UIUtils frame. ! * @author Tom Oinn ! */ ! public abstract class AbstractProcessorAction implements ProcessorActionSPI { ! ! public final ActionListener getListener(Processor processor) { ! final Processor theProcessor = processor; ! // Create a simple JPanel with the specified component in ! return new ActionListener() { ! public void actionPerformed(ActionEvent e) { ! Dimension loc = AbstractProcessorAction.this.getFrameLocation(); ! Dimension size = AbstractProcessorAction.this.getFrameSize(); ! Component c = getComponent(theProcessor); ! ScuflUIComponent frame = new SimpleFrame(c, theProcessor); ! UIUtils.createFrame((ScuflModel)null, frame, (int)loc.getWidth(), (int)loc.getHeight(), (int)size.getWidth(), (int)size.getHeight()); ! } ! }; ! } ! ! private class SimpleFrame extends JPanel implements ScuflUIComponent { ! Processor processor = null; ! public SimpleFrame(Component c, Processor p) { ! super(new BorderLayout()); ! add(c, BorderLayout.CENTER); ! this.processor = p; ! //setPreferredSize(c.getPreferredSize()); ! //setMinimumSize(c.getMinimumSize()); ! //setMaximumSize(c.getMaximumSize()); ! //setPreferredSize(new Dimension(0,0)); ! } ! public void attachToModel(ScuflModel model) { ! // ! } ! public void detachFromModel() { ! AbstractProcessorAction.this.frameClosing(); ! } ! public ImageIcon getIcon() { ! return AbstractProcessorAction.this.getIcon(); ! } ! public String getName() { ! try ! { ! return AbstractProcessorAction.this.getDescription(); ! } ! catch(NullPointerException ex) ! { ! return ""; ! } ! } ! } ! ! /** ! * Implement this to define the component which will be created ! * in the new UIUtils frame when the menu item, button or whatever ! * is activated ! */ ! public abstract JComponent getComponent(Processor processor); ! ! /** ! * Where should the frame open? ! */ ! public Dimension getFrameLocation() { ! return new Dimension(100,100); ! } ! ! /** ! * How big should it be? ! */ ! public Dimension getFrameSize() { ! return new Dimension(250,250); ! } ! ! /** ! * Add any actions to be performed on window close to here ! */ ! public void frameClosing() { ! // ! } ! ! } --- 1,106 ---- ! /** ! * This file is a component of the Taverna project, ! * and is licensed under the GNU LGPL. ! * Copyright Tom Oinn, EMBL-EBI ! */ ! package org.embl.ebi.escience.scuflui.processoractions; ! ! import java.awt.BorderLayout; ! import java.awt.Component; ! import java.awt.Dimension; ! import java.awt.event.ActionEvent; ! import java.awt.event.ActionListener; ! ! import javax.swing.ImageIcon; ! import javax.swing.JComponent; ! import javax.swing.JPanel; ! ! import org.embl.ebi.escience.scufl.Processor; ! import org.embl.ebi.escience.scufl.ScuflModel; ! import org.embl.ebi.escience.scuflui.shared.UIUtils; ! import org.embl.ebi.escience.scuflui.spi.ProcessorActionSPI; ! import org.embl.ebi.escience.scuflui.spi.UIComponentSPI; ! ! /** ! * A simple abstract implementation of the ProcessorActionSPI ! * which allows the extending class to simply specify a JComponent ! * to be created in a standard UIUtils frame. ! * @author Tom Oinn ! */ ! public abstract class AbstractProcessorAction implements ProcessorActionSPI { ! ! public final ActionListener getListener(Processor processor) { ! final Processor theProcessor = processor; ! // Create a simple JPanel with the specified component in ! return new ActionListener() { ! public void actionPerformed(ActionEvent e) { ! Dimension loc = AbstractProcessorAction.this.getFrameLocation(); ! Dimension size = AbstractProcessorAction.this.getFrameSize(); ! Component c = getComponent(theProcessor); ! UIComponentSPI frame = new SimpleFrame(c, theProcessor); ! UIUtils.createFrame((ScuflModel)null, frame, (int)loc.getWidth(), (int)loc.getHeight(), (int)size.getWidth(), (int)size.getHeight()); ! } ! }; ! } ! ! private class SimpleFrame extends JPanel implements UIComponentSPI { ! Processor processor = null; ! public SimpleFrame(Component c, Processor p) { ! super(new BorderLayout()); ! add(c, BorderLayout.CENTER); ! this.processor = p; ! //setPreferredSize(c.getPreferredSize()); ! //setMinimumSize(c.getMinimumSize()); ! //setMaximumSize(c.getMaximumSize()); ! //setPreferredSize(new Dimension(0,0)); ! } ! public void onDisplay() { ! // ! } ! public void onDispose() { ! AbstractProcessorAction.this.frameClosing(); ! } ! public ImageIcon getIcon() { ! return AbstractProcessorAction.this.getIcon(); ! } ! public String getName() { ! try ! { ! return AbstractProcessorAction.this.getDescription(); ! } ! catch(NullPointerException ex) ! { ! return ""; ! } ! } ! } ! ! /** ! * Implement this to define the component which will be created ! * in the new UIUtils frame when the menu item, button or whatever ! * is activated ! */ ! public abstract JComponent getComponent(Processor processor); ! ! /** ! * Where should the frame open? ! */ ! public Dimension getFrameLocation() { ! return new Dimension(100,100); ! } ! ! /** ! * How big should it be? ! */ ! public Dimension getFrameSize() { ! return new Dimension(250,250); ! } ! ! /** ! * Add any actions to be performed on window close to here ! */ ! public void frameClosing() { ! // ! } ! ! } Index: ProcessorActionRegistry.java =================================================================== RCS file: /cvsroot/taverna/taverna1.0/scufl/scufl-ui/src/main/java/org/embl/ebi/escience/scuflui/processoractions/ProcessorActionRegistry.java,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** ProcessorActionRegistry.java 10 Jul 2006 14:11:45 -0000 1.2 --- ProcessorActionRegistry.java 28 Sep 2006 16:36:54 -0000 1.3 *************** *** 1,72 **** ! /** ! * This file is a component of the Taverna project, ! * and is licensed under the GNU LGPL. ! * Copyright Tom Oinn, EMBL-EBI ! */ ! package org.embl.ebi.escience.scuflui.processoractions; ! ! import java.util.ArrayList; ! import java.util.List; ! ! import org.embl.ebi.escience.scufl.Processor; ! import org.embl.ebi.escience.utils.TavernaSPIRegistry; ! ! /** ! * Registry containing all registered ProcessorActionSPI implementations ! * ! * @author Tom Oinn ! * @author Stuart Owen ! */ ! public class ProcessorActionRegistry extends TavernaSPIRegistry<ProcessorActionSPI> { ! ! private static ProcessorActionRegistry instance = null; ! ! private List<ProcessorActionSPI> actions = new ArrayList<ProcessorActionSPI>(); ! ! private ProcessorActionRegistry() { ! // Prevent this class from being instantiated except through ! // the static instance() method ! super(ProcessorActionSPI.class); ! } ! ! /** ! * Return a static instance of the registry loaded with all available ! * instances of the ProcessorActionSPI ! */ ! public static synchronized ProcessorActionRegistry instance() { ! if (instance == null) { ! instance = new ProcessorActionRegistry(); ! instance.loadInstances(ProcessorActionRegistry.class.getClassLoader()); ! } ! return instance; ! } ! ! /** ! * Discover and load instances ! */ ! private void loadInstances(ClassLoader classLoader) { ! actions = findComponents(classLoader); ! } ! ! /** ! * Return a List containing all instances of the ProcessorActionSPI which ! * think they can operate on the specified processor ! */ ! public List getActions(Processor processor) { ! List result = new ArrayList(); ! for (ProcessorActionSPI spi : actions) { ! if (spi.canHandle(processor)) { ! result.add(spi); ! } ! } ! return result; ! } ! ! /** ! * Get all registered ProcessorActionSPI instances ! */ ! public List getAllActions() { ! return this.actions; ! } ! ! } --- 1,73 ---- ! /** ! * This file is a component of the Taverna project, ! * and is licensed under the GNU LGPL. ! * Copyright Tom Oinn, EMBL-EBI ! */ ! package org.embl.ebi.escience.scuflui.processoractions; ! ! import java.util.ArrayList; ! import java.util.List; ! ! import org.embl.ebi.escience.scufl.Processor; ! import org.embl.ebi.escience.scuflui.spi.ProcessorActionSPI; ! import org.embl.ebi.escience.utils.TavernaSPIRegistry; ! ! /** ! * Registry containing all registered ProcessorActionSPI implementations ! * ! * @author Tom Oinn ! * @author Stuart Owen ! */ ! public class ProcessorActionRegistry extends TavernaSPIRegistry<ProcessorActionSPI> { ! ! private static ProcessorActionRegistry instance = null; ! ! private List<ProcessorActionSPI> actions = new ArrayList<ProcessorActionSPI>(); ! ! private ProcessorActionRegistry() { ! // Prevent this class from being instantiated except through ! // the static instance() method ! super(ProcessorActionSPI.class); ! } ! ! /** ! * Return a static instance of the registry loaded with all available ! * instances of the ProcessorActionSPI ! */ ! public static synchronized ProcessorActionRegistry instance() { ! if (instance == null) { ! instance = new ProcessorActionRegistry(); ! instance.loadInstances(ProcessorActionRegistry.class.getClassLoader()); ! } ! return instance; ! } ! ! /** ! * Discover and load instances ! */ ! private void loadInstances(ClassLoader classLoader) { ! actions = findComponents(classLoader); ! } ! ! /** ! * Return a List containing all instances of the ProcessorActionSPI which ! * think they can operate on the specified processor ! */ ! public List getActions(Processor processor) { ! List result = new ArrayList(); ! for (ProcessorActionSPI spi : actions) { ! if (spi.canHandle(processor)) { ! result.add(spi); ! } ! } ! return result; ! } ! ! /** ! * Get all registered ProcessorActionSPI instances ! */ ! public List getAllActions() { ! return this.actions; ! } ! ! } Index: SetBoringAction.java =================================================================== RCS file: /cvsroot/taverna/taverna1.0/scufl/scufl-ui/src/main/java/org/embl/ebi/escience/scuflui/processoractions/SetBoringAction.java,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** SetBoringAction.java 10 Jul 2006 14:11:45 -0000 1.2 --- SetBoringAction.java 28 Sep 2006 16:36:54 -0000 1.3 *************** *** 1,42 **** ! /** ! * This file is a component of the Taverna project, ! * and is licensed under the GNU LGPL. ! * Copyright Tom Oinn, EMBL-EBI ! */ ! package org.embl.ebi.escience.scuflui.processoractions; ! ! import java.awt.event.ActionEvent; ! import java.awt.event.ActionListener; ! ! import javax.swing.ImageIcon; ! ! import org.embl.ebi.escience.scufl.Processor; ! ! /** ! * Set the boring flag on processors ! * @author Tom Oinn ! */ ! public class SetBoringAction implements ProcessorActionSPI { ! ! public ActionListener getListener(Processor processor) { ! final Processor theProcessor = processor; ! return new ActionListener() { ! public void actionPerformed(ActionEvent e) { ! theProcessor.setBoring(!theProcessor.isBoring()); ! } ! }; ! } ! ! public String getDescription() { ! return "Set as boring"; ! } ! ! public boolean canHandle(Processor processor) { ! return (!processor.isBoring()); ! } ! ! public ImageIcon getIcon() { ! return null; ! } ! ! } --- 1,43 ---- ! /** ! * This file is a component of the Taverna project, ! * and is licensed under the GNU LGPL. ! * Copyright Tom Oinn, EMBL-EBI ! */ ! package org.embl.ebi.escience.scuflui.processoractions; ! ! import java.awt.event.ActionEvent; ! import java.awt.event.ActionListener; ! ! import javax.swing.ImageIcon; ! ! import org.embl.ebi.escience.scufl.Processor; ! import org.embl.ebi.escience.scuflui.spi.ProcessorActionSPI; ! ! /** ! * Set the boring flag on processors ! * @author Tom Oinn ! */ ! public class SetBoringAction implements ProcessorActionSPI { ! ! public ActionListener getListener(Processor processor) { ! final Processor theProcessor = processor; ! return new ActionListener() { ! public void actionPerformed(ActionEvent e) { ! theProcessor.setBoring(!theProcessor.isBoring()); ! } ! }; ! } ! ! public String getDescription() { ! return "Set as boring"; ! } ! ! public boolean canHandle(Processor processor) { ! return (!processor.isBoring()); ! } ! ! public ImageIcon getIcon() { ! return null; ! } ! ! } --- ProcessorActionSPI.java DELETED --- |