diff --git a/src/main/java/plugins/adufour/blocks/tools/output/BooleanOutput.java b/src/main/java/plugins/adufour/blocks/tools/output/BooleanOutput.java new file mode 100644 index 0000000000000000000000000000000000000000..a268cace32f7c003cd9144b8bd5e290fbeba9e82 --- /dev/null +++ b/src/main/java/plugins/adufour/blocks/tools/output/BooleanOutput.java @@ -0,0 +1,26 @@ +package plugins.adufour.blocks.tools.output; + +import icy.plugin.abstract_.Plugin; +import plugins.adufour.blocks.util.VarList; +import plugins.adufour.vars.lang.VarBoolean; + +public class BooleanOutput extends Plugin implements OutputBlock +{ + @Override + public void declareInput(VarList inputMap) + { + inputMap.add("boolean", new VarBoolean("Boolean", false)); + } + + @Override + public void declareOutput(VarList outputMap) + { + // + } + + @Override + public void run() + { + // + } +} diff --git a/src/main/java/plugins/adufour/blocks/tools/output/DecimalOutput.java b/src/main/java/plugins/adufour/blocks/tools/output/DecimalOutput.java new file mode 100644 index 0000000000000000000000000000000000000000..eb469a29758523d04f3965fc282f5a610048dbdd --- /dev/null +++ b/src/main/java/plugins/adufour/blocks/tools/output/DecimalOutput.java @@ -0,0 +1,29 @@ +package plugins.adufour.blocks.tools.output; + +import icy.plugin.abstract_.Plugin; +import plugins.adufour.blocks.util.VarList; +import plugins.adufour.vars.lang.VarDouble; + +/** + * Input block reading a 64-bit double-precision floating-point value + * + * @author Alexandre Dufour + */ +public class DecimalOutput extends Plugin implements OutputBlock +{ + @Override + public void declareInput(VarList inputMap) + { + inputMap.add("decimal", new VarDouble("decimal", 0.0)); + } + + @Override + public void run() + { + } + + @Override + public void declareOutput(VarList outputMap) + { + } +} diff --git a/src/main/java/plugins/adufour/blocks/tools/output/DecimalsOutput.java b/src/main/java/plugins/adufour/blocks/tools/output/DecimalsOutput.java new file mode 100644 index 0000000000000000000000000000000000000000..5014b2123c4f07304c3b2fd2338844fc053a499b --- /dev/null +++ b/src/main/java/plugins/adufour/blocks/tools/output/DecimalsOutput.java @@ -0,0 +1,29 @@ +package plugins.adufour.blocks.tools.output; + +import icy.plugin.abstract_.Plugin; +import plugins.adufour.blocks.util.VarList; +import plugins.adufour.vars.lang.VarDoubleArrayNative; + +/** + * Utility block reading an array of double-precision floating-point values + * + * @author Alexandre Dufour + */ +public class DecimalsOutput extends Plugin implements OutputBlock +{ + @Override + public void declareInput(VarList inputMap) + { + inputMap.add("decimals", new VarDoubleArrayNative("decimals", new double[0])); + } + + @Override + public void run() + { + } + + @Override + public void declareOutput(VarList outputMap) + { + } +} diff --git a/src/main/java/plugins/adufour/blocks/tools/output/FileOutput.java b/src/main/java/plugins/adufour/blocks/tools/output/FileOutput.java new file mode 100644 index 0000000000000000000000000000000000000000..c57803e6b5581b2b2fe8ba2f1232645a8ae4b349 --- /dev/null +++ b/src/main/java/plugins/adufour/blocks/tools/output/FileOutput.java @@ -0,0 +1,34 @@ +package plugins.adufour.blocks.tools.output; + +import icy.plugin.abstract_.Plugin; +import plugins.adufour.blocks.util.VarList; +import plugins.adufour.vars.gui.FileMode; +import plugins.adufour.vars.gui.model.FileTypeModel; +import plugins.adufour.vars.lang.VarFile; + +/** + * Input block reading a file + * + * @author Alexandre Dufour + */ +public class FileOutput extends Plugin implements OutputBlock +{ + @Override + public void run() + { + } + + @Override + public void declareInput(VarList inputMap) + { + VarFile vf = new VarFile("file", null); + vf.setDefaultEditorModel(new FileTypeModel("", FileMode.FILES, null, false)); + inputMap.add("file", vf); + } + + @Override + public void declareOutput(VarList outputMap) + { + } + +} diff --git a/src/main/java/plugins/adufour/blocks/tools/output/FilesOutput.java b/src/main/java/plugins/adufour/blocks/tools/output/FilesOutput.java new file mode 100644 index 0000000000000000000000000000000000000000..16eec7c33ee2905c309a889b96827f4449e5e2d5 --- /dev/null +++ b/src/main/java/plugins/adufour/blocks/tools/output/FilesOutput.java @@ -0,0 +1,34 @@ +package plugins.adufour.blocks.tools.output; + +import icy.plugin.abstract_.Plugin; +import plugins.adufour.blocks.util.VarList; +import plugins.adufour.vars.gui.FileMode; +import plugins.adufour.vars.gui.model.FileTypeListModel; +import plugins.adufour.vars.lang.VarFileArray; + +/** + * Input block reading a list of files + * + * @author Alexandre Dufour + */ +public class FilesOutput extends Plugin implements OutputBlock +{ + @Override + public void run() + { + } + + @Override + public void declareInput(VarList inputMap) + { + VarFileArray vf = new VarFileArray("files", new java.io.File[0]); + vf.setDefaultEditorModel(new FileTypeListModel("", FileMode.FILES, null, false)); + inputMap.add("files", vf); + } + + @Override + public void declareOutput(VarList outputMap) + { + } + +} diff --git a/src/main/java/plugins/adufour/blocks/tools/output/FolderOutput.java b/src/main/java/plugins/adufour/blocks/tools/output/FolderOutput.java new file mode 100644 index 0000000000000000000000000000000000000000..acdd8dd6bb9e246956fb60024d7ca09047de294d --- /dev/null +++ b/src/main/java/plugins/adufour/blocks/tools/output/FolderOutput.java @@ -0,0 +1,34 @@ +package plugins.adufour.blocks.tools.output; + +import icy.plugin.abstract_.Plugin; +import plugins.adufour.blocks.util.VarList; +import plugins.adufour.vars.gui.FileMode; +import plugins.adufour.vars.gui.model.FileTypeModel; +import plugins.adufour.vars.lang.VarFile; + +/** + * Input block reading a folder + * + * @author Alexandre Dufour + */ +public class FolderOutput extends Plugin implements OutputBlock +{ + @Override + public void run() + { + } + + @Override + public void declareInput(VarList inputMap) + { + VarFile vf = new VarFile("folder", null); + vf.setDefaultEditorModel(new FileTypeModel("", FileMode.FOLDERS, null, false)); + inputMap.add("folder", vf); + } + + @Override + public void declareOutput(VarList outputMap) + { + } + +} diff --git a/src/main/java/plugins/adufour/blocks/tools/output/FoldersOutput.java b/src/main/java/plugins/adufour/blocks/tools/output/FoldersOutput.java new file mode 100644 index 0000000000000000000000000000000000000000..7097d7db6536bb4a10ac6ad00d5d7f423d87d194 --- /dev/null +++ b/src/main/java/plugins/adufour/blocks/tools/output/FoldersOutput.java @@ -0,0 +1,34 @@ +package plugins.adufour.blocks.tools.output; + +import icy.plugin.abstract_.Plugin; +import plugins.adufour.blocks.util.VarList; +import plugins.adufour.vars.gui.FileMode; +import plugins.adufour.vars.gui.model.FileTypeListModel; +import plugins.adufour.vars.lang.VarFileArray; + +/** + * Input block reading a list of folders + * + * @author Alexandre Dufour + */ +public class FoldersOutput extends Plugin implements OutputBlock +{ + @Override + public void run() + { + } + + @Override + public void declareInput(VarList inputMap) + { + VarFileArray vf = new VarFileArray("folders", new java.io.File[0]); + vf.setDefaultEditorModel(new FileTypeListModel("", FileMode.FOLDERS, null, false)); + inputMap.add("folders", vf); + } + + @Override + public void declareOutput(VarList outputMap) + { + } + +} diff --git a/src/main/java/plugins/adufour/blocks/tools/output/IntegerOutput.java b/src/main/java/plugins/adufour/blocks/tools/output/IntegerOutput.java new file mode 100644 index 0000000000000000000000000000000000000000..ea444dccc18bd8da7bb5f5a9bbb4be3e05e90f55 --- /dev/null +++ b/src/main/java/plugins/adufour/blocks/tools/output/IntegerOutput.java @@ -0,0 +1,30 @@ +package plugins.adufour.blocks.tools.output; + +import icy.plugin.abstract_.Plugin; +import plugins.adufour.blocks.util.VarList; +import plugins.adufour.vars.lang.VarInteger; + +/** + * Utility block reading a 32-bit integer value + * + * @author Alexandre Dufour + */ +public class IntegerOutput extends Plugin implements OutputBlock +{ + @Override + public void declareInput(VarList inputMap) + { + VarInteger vi = new VarInteger("integer", 0); + inputMap.add("integer", vi); + } + + @Override + public void run() + { + } + + @Override + public void declareOutput(VarList outputMap) + { + } +} diff --git a/src/main/java/plugins/adufour/blocks/tools/output/IntegersOutput.java b/src/main/java/plugins/adufour/blocks/tools/output/IntegersOutput.java new file mode 100644 index 0000000000000000000000000000000000000000..24f3b6339defc1c48ccc66a0dd7b1d6c7945c7d1 --- /dev/null +++ b/src/main/java/plugins/adufour/blocks/tools/output/IntegersOutput.java @@ -0,0 +1,29 @@ +package plugins.adufour.blocks.tools.output; + +import icy.plugin.abstract_.Plugin; +import plugins.adufour.blocks.util.VarList; +import plugins.adufour.vars.lang.VarIntegerArrayNative; + +/** + * Utility block reading an array of 32-bit integer values + * + * @author Alexandre Dufour + */ +public class IntegersOutput extends Plugin implements OutputBlock +{ + @Override + public void declareInput(VarList inputMap) + { + inputMap.add("integers", new VarIntegerArrayNative("integers", new int[0])); + } + + @Override + public void run() + { + } + + @Override + public void declareOutput(VarList outputMap) + { + } +} diff --git a/src/main/java/plugins/adufour/blocks/tools/output/OutputBlock.java b/src/main/java/plugins/adufour/blocks/tools/output/OutputBlock.java new file mode 100644 index 0000000000000000000000000000000000000000..f4127101c8eb38cfe68090ab2e9abf7feb3bf70f --- /dev/null +++ b/src/main/java/plugins/adufour/blocks/tools/output/OutputBlock.java @@ -0,0 +1,13 @@ +package plugins.adufour.blocks.tools.output; + +import plugins.adufour.blocks.lang.Block; + +/** + * Interface used to flag pure output blocks + * + * @author Stephane Dallongeville + * + */ +public interface OutputBlock extends Block +{ +} \ No newline at end of file diff --git a/src/main/java/plugins/adufour/blocks/tools/output/SequenceOutput.java b/src/main/java/plugins/adufour/blocks/tools/output/SequenceOutput.java new file mode 100644 index 0000000000000000000000000000000000000000..607badbb23612cf3142640560c56ad264c1af24b --- /dev/null +++ b/src/main/java/plugins/adufour/blocks/tools/output/SequenceOutput.java @@ -0,0 +1,36 @@ +package plugins.adufour.blocks.tools.output; + +import icy.plugin.abstract_.Plugin; +import plugins.adufour.blocks.util.VarList; +import plugins.adufour.vars.lang.VarSequence; + +/** + * Utility block reading a {@link icy.sequence.Sequence} object + * + * @author Alexandre Dufour + */ +public class SequenceOutput extends Plugin implements OutputBlock +{ + private final VarSequence vs = new VarSequence("sequence", null); + + @Override + public void run() + { + } + + @Override + public void declareInput(VarList inputMap) + { + inputMap.add("input sequence", vs); + } + + @Override + public void declareOutput(VarList outputMap) + { + } + + public VarSequence getVariable() + { + return vs; + } +} diff --git a/src/main/java/plugins/adufour/blocks/tools/output/SequencesOutput.java b/src/main/java/plugins/adufour/blocks/tools/output/SequencesOutput.java new file mode 100644 index 0000000000000000000000000000000000000000..f185d08fc0e90c2d21fa3ae17404bc09fa466ad4 --- /dev/null +++ b/src/main/java/plugins/adufour/blocks/tools/output/SequencesOutput.java @@ -0,0 +1,30 @@ +package plugins.adufour.blocks.tools.output; + +import icy.plugin.abstract_.Plugin; +import plugins.adufour.blocks.util.VarList; +import plugins.adufour.vars.lang.VarSequenceArray; + +/** + * Utility block reading a list of {@link icy.sequence.Sequence} objects + * + * @author Alexandre Dufour + */ +public class SequencesOutput extends Plugin implements OutputBlock +{ + @Override + public void run() + { + } + + @Override + public void declareInput(VarList inputMap) + { + VarSequenceArray vsa = new VarSequenceArray("sequence"); + inputMap.add("input sequence", vsa); + } + + @Override + public void declareOutput(VarList outputMap) + { + } +} diff --git a/src/main/java/plugins/adufour/blocks/tools/output/TextOutput.java b/src/main/java/plugins/adufour/blocks/tools/output/TextOutput.java new file mode 100644 index 0000000000000000000000000000000000000000..d5c3ec07d58256f04643aa1af4c68c448a1ccbd4 --- /dev/null +++ b/src/main/java/plugins/adufour/blocks/tools/output/TextOutput.java @@ -0,0 +1,31 @@ +package plugins.adufour.blocks.tools.output; + +import icy.plugin.abstract_.Plugin; +import plugins.adufour.blocks.util.VarList; +import plugins.adufour.vars.lang.VarString; + +/** + * Text input + * + * @author Alexandre Dufour + */ +public class TextOutput extends Plugin implements OutputBlock +{ + @Override + public void run() + { + + } + + @Override + public void declareInput(VarList inputMap) + { + inputMap.add("text", new VarString("text", "")); + } + + @Override + public void declareOutput(VarList outputMap) + { + + } +} diff --git a/src/main/java/plugins/adufour/blocks/util/BlocksFinder.java b/src/main/java/plugins/adufour/blocks/util/BlocksFinder.java index 73c13acaa9fb32558247286a2cc7719540bfb7f2..99cf45102617752be40f6cc072453af52a73eaa7 100644 --- a/src/main/java/plugins/adufour/blocks/util/BlocksFinder.java +++ b/src/main/java/plugins/adufour/blocks/util/BlocksFinder.java @@ -51,6 +51,7 @@ import plugins.adufour.blocks.tools.ToolsBlock; import plugins.adufour.blocks.tools.ij.IJBlock; import plugins.adufour.blocks.tools.input.InputBlock; import plugins.adufour.blocks.tools.io.IOBlock; +import plugins.adufour.blocks.tools.output.OutputBlock; import plugins.adufour.blocks.tools.roi.ROIBlock; import plugins.adufour.blocks.tools.sequence.SequenceBlock; import plugins.adufour.protocols.gui.BlockSearchPanel; @@ -311,6 +312,9 @@ public class BlocksFinder JMenu mnInput = new JMenu("Read..."); mnInput.setIcon(new IcyIcon(ResourceUtil.ICON_REDO, 22)); + JMenu mnOutput = new JMenu("Out..."); + mnOutput.setIcon(new IcyIcon(ResourceUtil.ICON_UNDO, 22)); + JMenu mnIO = new JMenu("I/O..."); mnIO.setIcon(new IcyIcon(ResourceUtil.ICON_SAVE, 22)); @@ -432,6 +436,10 @@ public class BlocksFinder { mnInput.add(menuItem); } + else if (OutputBlock.class.isAssignableFrom(blockClass)) + { + mnOutput.add(menuItem); + } else if (SequenceBlock.class.isAssignableFrom(blockClass)) { mnSeq.add(menuItem); @@ -489,6 +497,7 @@ public class BlocksFinder splitLongMenus(mnBlocks, 15); splitLongMenus(mnInput, 15); + splitLongMenus(mnOutput, 15); splitLongMenus(mnSeq, 15); splitLongMenus(mnROI, 15); splitLongMenus(mnIO, 15); @@ -498,6 +507,7 @@ public class BlocksFinder menuContainer.add(mnBlocks); menuContainer.add(mnInput); + menuContainer.add(mnOutput); menuContainer.add(mnSeq); menuContainer.add(mnROI); menuContainer.add(mnIO); diff --git a/src/main/java/plugins/adufour/blocks/util/BlocksML.java b/src/main/java/plugins/adufour/blocks/util/BlocksML.java index e8c3e332fb6bfa8880e06dc6250f1b211dd461ee..5fbb6a66b01b05080c24415c8d4f844442980250 100644 --- a/src/main/java/plugins/adufour/blocks/util/BlocksML.java +++ b/src/main/java/plugins/adufour/blocks/util/BlocksML.java @@ -43,6 +43,7 @@ import plugins.adufour.blocks.lang.BlockDescriptor; import plugins.adufour.blocks.lang.Link; import plugins.adufour.blocks.lang.WorkFlow; import plugins.adufour.blocks.tools.input.InputBlock; +import plugins.adufour.blocks.tools.output.OutputBlock; import plugins.adufour.protocols.Protocols; import plugins.adufour.vars.gui.model.TypeSelectionModel; import plugins.adufour.vars.lang.Var; @@ -598,7 +599,7 @@ public class BlocksML XMLUtil.setAttributeValue(blockNode, "definedName", blockData.getDefinedName()); XMLUtil.setAttributeBooleanValue(blockNode, "keepsResults", blockData.keepsResults()); - if (block instanceof InputBlock) + if ((block instanceof InputBlock) || (block instanceof OutputBlock)) XMLUtil.setAttributeValue(blockNode, "CommandLineID", blockData.getCommandLineID()); if (blockData.isWorkFlow()) @@ -1360,7 +1361,7 @@ public class BlocksML blockDescriptor.keepResults(XMLUtil.getAttributeBooleanValue(blockNode, "keepsResults", true)); - if (block instanceof InputBlock) + if ((block instanceof InputBlock) || (block instanceof OutputBlock)) blockDescriptor.setCommandLineID(XMLUtil.getAttributeValue(blockNode, "CommandLineID", "")); workFlow.addBlock(blockDescriptor); diff --git a/src/main/java/plugins/adufour/protocols/gui/block/BlockPanel.java b/src/main/java/plugins/adufour/protocols/gui/block/BlockPanel.java index 5dfcf700622fc782b77c7ec56b8e0c6f41652a9c..11a17046698adec13d7724964fe2a1442256cab5 100644 --- a/src/main/java/plugins/adufour/protocols/gui/block/BlockPanel.java +++ b/src/main/java/plugins/adufour/protocols/gui/block/BlockPanel.java @@ -53,6 +53,7 @@ import plugins.adufour.blocks.lang.BlockDescriptor; import plugins.adufour.blocks.lang.BlockDescriptor.BlockStatus; import plugins.adufour.blocks.lang.WorkFlow; import plugins.adufour.blocks.tools.input.InputBlock; +import plugins.adufour.blocks.tools.output.OutputBlock; import plugins.adufour.blocks.util.BlockListener; import plugins.adufour.blocks.util.VarList; import plugins.adufour.protocols.Protocols; @@ -90,7 +91,7 @@ public class BlockPanel extends JPanel implements ActionListener, BlockListener if (dragging) { WorkFlow wf = workFlowPane.getWorkFlow(); - + if (wf.isBlockSelected(blockDesc)) { for (BlockDescriptor bd : wf.getBlockSelection()) @@ -846,7 +847,7 @@ public class BlockPanel extends JPanel implements ActionListener, BlockListener menu.addSeparator(); - if (blockDesc.getBlock() instanceof InputBlock) + if ((blockDesc.getBlock() instanceof InputBlock) || (blockDesc.getBlock() instanceof OutputBlock)) { // option to retrieve parameter from command line String tooltip = "<html><h4>Identifier used to set the value from the command line</h4></html>";