From: <cs-...@li...> - 2011-12-15 18:58:23
|
details: http://cs-studio.hg.sourceforge.net/hgweb/cs-studio/cs-studio//hgrepo/c/cs/cs-studio/cs-studio/rev/3771208d45d3 changeset: 13140:3771208d45d3 user: kasemir date: Tue Dec 13 18:21:02 2011 -0500 description: SNS scan server: Drag/drop in tree editor... details: http://cs-studio.hg.sourceforge.net/hgweb/cs-studio/cs-studio//hgrepo/c/cs/cs-studio/cs-studio/rev/1579a5d539d1 changeset: 13141:1579a5d539d1 user: kasemir date: Wed Dec 14 11:04:28 2011 -0500 description: SNS scan server: Drag/drop in tree editor... details: http://cs-studio.hg.sourceforge.net/hgweb/cs-studio/cs-studio//hgrepo/c/cs/cs-studio/cs-studio/rev/86850421e9a5 changeset: 13142:86850421e9a5 user: kasemir date: Wed Dec 14 11:49:15 2011 -0500 description: SNS scan server: Manipulate scan tree... details: http://cs-studio.hg.sourceforge.net/hgweb/cs-studio/cs-studio//hgrepo/c/cs/cs-studio/cs-studio/rev/e35fb5ed1cbe changeset: 13143:e35fb5ed1cbe user: kasemir date: Wed Dec 14 16:12:01 2011 -0500 description: SNS scan server: Manipulate scan tree... details: http://cs-studio.hg.sourceforge.net/hgweb/cs-studio/cs-studio//hgrepo/c/cs/cs-studio/cs-studio/rev/ec4332308817 changeset: 13144:ec4332308817 user: kasemir date: Thu Dec 15 11:55:13 2011 -0500 description: SNS scan server: Add commands to scan tree... details: http://cs-studio.hg.sourceforge.net/hgweb/cs-studio/cs-studio//hgrepo/c/cs/cs-studio/cs-studio/rev/42c4ef549be7 changeset: 13145:42c4ef549be7 user: kasemir date: Thu Dec 15 12:07:57 2011 -0500 description: SNS scan server: Scan tree can be edited. details: http://cs-studio.hg.sourceforge.net/hgweb/cs-studio/cs-studio//hgrepo/c/cs/cs-studio/cs-studio/rev/684a32e46be2 changeset: 13146:684a32e46be2 user: kasemir date: Thu Dec 15 12:20:14 2011 -0500 description: SNS scan server: Scan tree 'save as' details: http://cs-studio.hg.sourceforge.net/hgweb/cs-studio/cs-studio//hgrepo/c/cs/cs-studio/cs-studio/rev/b9f6661cefe8 changeset: 13147:b9f6661cefe8 user: kasemir date: Thu Dec 15 13:12:35 2011 -0500 description: SNS scan server: (Toolbar) command to create new, empty scan config details: http://cs-studio.hg.sourceforge.net/hgweb/cs-studio/cs-studio//hgrepo/c/cs/cs-studio/cs-studio/rev/87bd181f755e changeset: 13148:87bd181f755e user: kasemir date: Thu Dec 15 13:31:28 2011 -0500 description: SNS scan server: Scan tree perspective details: http://cs-studio.hg.sourceforge.net/hgweb/cs-studio/cs-studio//hgrepo/c/cs/cs-studio/cs-studio/rev/2b7d8149370e changeset: 13149:2b7d8149370e user: kasemir date: Thu Dec 15 13:53:37 2011 -0500 description: SNS scan server: Scan tree submit to server details: http://cs-studio.hg.sourceforge.net/hgweb/cs-studio/cs-studio//hgrepo/c/cs/cs-studio/cs-studio/rev/19cc159b4077 changeset: 13150:19cc159b4077 user: kasemir date: Thu Dec 15 13:57:12 2011 -0500 description: Merge diffstat: applications/plugins/org.csstudio.domain.desy.softioc/res/st.cmd | 8 +- applications/plugins/org.csstudio.domain.desy.softioc/src/java/org/csstudio/domain/desy/softioc/SoftIoc.java | 33 +- applications/plugins/org.csstudio.sds.components.epics/src/org/csstudio/sds/behavior/desy/AbstractDesyBehavior.java | 44 +- applications/plugins/org.csstudio.sds.components.epics/src/org/csstudio/sds/behavior/desy/AbstractDesyConnectionBehavior.java | 2 +- applications/plugins/org.csstudio.sds.components.epics/src/org/csstudio/sds/behavior/desy/LabeConnectionBehavior.java | 33 +- applications/plugins/org.csstudio.sds.components.epics/src/org/csstudio/sds/behavior/desy/LabelAlarmBehavior.java | 16 +- applications/plugins/org.csstudio.sds.components.epics/src/org/csstudio/sds/behavior/desy/TextinputConnectionBehavior.java | 10 +- applications/plugins/org.csstudio.sds.components.epics/test/org/csstudio/sds/behavior/desy/ConnectionLabelBehaviorTest.java | 1 + applications/plugins/org.csstudio.sds/resources/db/CAJPrecisionTest.db | 39 + applications/plugins/org.csstudio.sds/test/org/csstudio/sds/CAJPrecisionHeadlessTest.java | 294 +++++++++ applications/plugins/org.csstudio.sds/test/org/csstudio/sds/eventhandling/AbstractBehaviorTest.java | 5 + products/SNS/plugins/org.csstudio.scan.ui.scantree/build.properties | 4 +- products/SNS/plugins/org.csstudio.scan.ui.scantree/icons/add.gif | 0 products/SNS/plugins/org.csstudio.scan.ui.scantree/icons/new_scantree.png | 0 products/SNS/plugins/org.csstudio.scan.ui.scantree/icons/run.png | 0 products/SNS/plugins/org.csstudio.scan.ui.scantree/plugin.properties | 4 +- products/SNS/plugins/org.csstudio.scan.ui.scantree/plugin.xml | 45 + products/SNS/plugins/org.csstudio.scan.ui.scantree/src/org/csstudio/scan/ui/scantree/CommandListView.java | 111 +++ products/SNS/plugins/org.csstudio.scan.ui.scantree/src/org/csstudio/scan/ui/scantree/CommandTreeLabelProvider.java | 37 +- products/SNS/plugins/org.csstudio.scan.ui.scantree/src/org/csstudio/scan/ui/scantree/EmptyEditorInput.java | 67 ++ products/SNS/plugins/org.csstudio.scan.ui.scantree/src/org/csstudio/scan/ui/scantree/GUI.java | 115 --- products/SNS/plugins/org.csstudio.scan.ui.scantree/src/org/csstudio/scan/ui/scantree/Messages.java | 9 + products/SNS/plugins/org.csstudio.scan.ui.scantree/src/org/csstudio/scan/ui/scantree/Perspective.java | 77 ++ products/SNS/plugins/org.csstudio.scan.ui.scantree/src/org/csstudio/scan/ui/scantree/ScanCommandTransfer.java | 102 +++ products/SNS/plugins/org.csstudio.scan.ui.scantree/src/org/csstudio/scan/ui/scantree/ScanEditor.java | 192 +++++- products/SNS/plugins/org.csstudio.scan.ui.scantree/src/org/csstudio/scan/ui/scantree/ScanTreeGUI.java | 299 ++++++++++ products/SNS/plugins/org.csstudio.scan.ui.scantree/src/org/csstudio/scan/ui/scantree/ScanTreeGUIListener.java | 28 + products/SNS/plugins/org.csstudio.scan.ui.scantree/src/org/csstudio/scan/ui/scantree/TreeManipulator.java | 131 ++++ products/SNS/plugins/org.csstudio.scan.ui.scantree/src/org/csstudio/scan/ui/scantree/actions/AddCommandAction.java | 35 + products/SNS/plugins/org.csstudio.scan.ui.scantree/src/org/csstudio/scan/ui/scantree/actions/NewScanTree.java | 36 + products/SNS/plugins/org.csstudio.scan.ui.scantree/src/org/csstudio/scan/ui/scantree/actions/RemoveCommandAction.java | 43 + products/SNS/plugins/org.csstudio.scan.ui.scantree/src/org/csstudio/scan/ui/scantree/actions/SubmitScanAction.java | 38 + products/SNS/plugins/org.csstudio.scan.ui.scantree/src/org/csstudio/scan/ui/scantree/messages.properties | 9 + products/SNS/plugins/org.csstudio.scan.ui.scantree/src/org/csstudio/scan/ui/scantree/properties/DelayCommandAdapter.java | 2 +- products/SNS/plugins/org.csstudio.scan.ui.scantree/src/org/csstudio/scan/ui/scantree/properties/LogCommandAdapter.java | 2 +- products/SNS/plugins/org.csstudio.scan.ui.scantree/src/org/csstudio/scan/ui/scantree/properties/LoopCommandAdapter.java | 2 +- products/SNS/plugins/org.csstudio.scan.ui.scantree/src/org/csstudio/scan/ui/scantree/properties/SetCommandAdapter.java | 2 +- products/SNS/plugins/org.csstudio.scan.ui.scantree/src/org/csstudio/scan/ui/scantree/properties/WaitCommandAdapter.java | 2 +- products/SNS/plugins/org.csstudio.scan.ui.scantree/test/org/csstudio/scan/ui/scantree/DemoScan.java | 5 - products/SNS/plugins/org.csstudio.scan.ui.scantree/test/org/csstudio/scan/ui/scantree/LogCommandAdapterUnitTest.java | 2 +- products/SNS/plugins/org.csstudio.scan.ui.scantree/test/org/csstudio/scan/ui/scantree/ScanCommandTransferUnitTest.java | 43 + products/SNS/plugins/org.csstudio.scan.ui.scantree/test/org/csstudio/scan/ui/scantree/ScanTreeDemo.java | 42 - products/SNS/plugins/org.csstudio.scan.ui.scantree/test/org/csstudio/scan/ui/scantree/ScanTreeGUIDemo.java | 47 + products/SNS/plugins/org.csstudio.scan.ui.scantree/test/org/csstudio/scan/ui/scantree/TreeManipulatiorUnitTest.java | 130 ++++ 44 files changed, 1883 insertions(+), 263 deletions(-) diffs (truncated from 2694 to 300 lines): diff -r 8288753ca865 -r 19cc159b4077 applications/plugins/org.csstudio.domain.desy.softioc/res/st.cmd --- a/applications/plugins/org.csstudio.domain.desy.softioc/res/st.cmd Tue Dec 13 17:02:37 2011 -0500 +++ b/applications/plugins/org.csstudio.domain.desy.softioc/res/st.cmd Thu Dec 15 13:57:12 2011 -0500 @@ -4,20 +4,20 @@ # iocLogClient # interconnection server for demo, IP: 127.0.0.1 (local host) epicsEnvSet("EPICS_IOC_LOG_INET_LIST","127.0.0.1") -epicsEnvSet("EPICS_IOC_NAME","TrainIoc") +epicsEnvSet("EPICS_IOC_NAME","UnitTestIoc") epicsEnvSet("EPICS_FACILITY","TEST") -epicsEnvSet(IOCSH_PS1,"TrainIoc> ") +epicsEnvSet(IOCSH_PS1,"UnitTestIoc> ") ## Register all support components dbLoadDatabase "dbd/demo.dbd" demo_registerRecordDeviceDriver pdbbase # CA security -asSetFilename("asFile") +#asSetFilename("asFile") ## Load record instances -dbLoadRecords("db/iocCommon.db", "APPL=TrainIoc") +dbLoadRecords("db/iocCommon.db", "APPL=UnitTestIoc") # here the soft ioc code will append the given db files # and thereafter the following two lines diff -r 8288753ca865 -r 19cc159b4077 applications/plugins/org.csstudio.domain.desy.softioc/src/java/org/csstudio/domain/desy/softioc/SoftIoc.java --- a/applications/plugins/org.csstudio.domain.desy.softioc/src/java/org/csstudio/domain/desy/softioc/SoftIoc.java Tue Dec 13 17:02:37 2011 -0500 +++ b/applications/plugins/org.csstudio.domain.desy.softioc/src/java/org/csstudio/domain/desy/softioc/SoftIoc.java Thu Dec 15 13:57:12 2011 -0500 @@ -21,9 +21,12 @@ */ package org.csstudio.domain.desy.softioc; +import java.io.BufferedReader; import java.io.File; import java.io.FileWriter; import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; import java.net.URISyntaxException; import javax.annotation.Nonnull; @@ -88,10 +91,34 @@ writer.append("dbLoadRecords(\"").append(dbFile.getAbsolutePath()).append("\")\n"); } writer.append("iocInit\n"); - writer.append("dbpf \"TrainIoc:valid\",\"Enabled\" # from demo\n\n\n"); - writer.append("iocLogClientInit\n"); + writer.append("dbpf \"UnitTestIoc:valid\",\"Enabled\" # from demo\n\n\n"); + writer.close(); + } - writer.close(); + public boolean isStartUpDone() { + boolean done = false; + final InputStream inputStream = _process.getInputStream(); + try { + BufferedReader input; + final InputStreamReader inputStreamReader = new InputStreamReader(inputStream); + input = new BufferedReader(inputStreamReader); + String line; + line = input.readLine(); + while (line != null ) { + done = line.startsWith("DBR_STRING: \"Enabled\""); + if (done) { + return true; + } + // TODO (hrickens): hier muss nach einem Timeout Abgebrochen werden. Sonst kann es sein das man endlos Wartet! + line = input.readLine(); + } + if(input.ready()) { + input.close(); + } + } catch (final IOException e) { + e.printStackTrace(); + } + return done; } diff -r 8288753ca865 -r 19cc159b4077 applications/plugins/org.csstudio.sds.components.epics/src/org/csstudio/sds/behavior/desy/AbstractDesyBehavior.java --- a/applications/plugins/org.csstudio.sds.components.epics/src/org/csstudio/sds/behavior/desy/AbstractDesyBehavior.java Tue Dec 13 17:02:37 2011 -0500 +++ b/applications/plugins/org.csstudio.sds.components.epics/src/org/csstudio/sds/behavior/desy/AbstractDesyBehavior.java Thu Dec 15 13:57:12 2011 -0500 @@ -16,13 +16,17 @@ */ package org.csstudio.sds.behavior.desy; +import java.text.NumberFormat; import java.util.HashMap; +import java.util.Locale; import java.util.Map; import org.csstudio.sds.eventhandling.AbstractBehavior; import org.csstudio.sds.model.AbstractWidgetModel; import org.csstudio.sds.model.BorderStyleEnum; +import org.csstudio.sds.model.TextTypeEnum; import org.epics.css.dal.context.ConnectionState; +import org.epics.css.dal.simple.AnyData; import org.epics.css.dal.simple.Severity; /** @@ -136,8 +140,15 @@ */ protected final String determineBackgroundColor(final ConnectionState connectionState) { - return connectionState != null ? colorsByConnectionState.get(connectionState) - : colorsByConnectionState.get(ConnectionState.INITIAL); + final ConnectionState tempConnectionState = connectionState != null ? connectionState : ConnectionState.INITIAL; + return getColorsByConnectionState(tempConnectionState); + } + + private String getColorsByConnectionState(final ConnectionState connectionState) { + if(colorsByConnectionState.containsKey(connectionState)) { + return colorsByConnectionState.get(connectionState); + } + return ININTIAL; } /** @@ -214,4 +225,33 @@ return color; } + public static void handleValueType(final AbstractWidgetModel model, final TextTypeEnum textTypeEnum, final String propertyId, final AnyData anyData) { + switch (textTypeEnum) { + case ALIAS: + model.setPropertyValue(propertyId, anyData.getMetaData().getName()); + break; + case DOUBLE: + model.setPropertyValue(propertyId, anyData.stringValue()); + break; + case EXP: + model.setPropertyValue(propertyId, anyData.stringValue()); + break; + case HEX: + model.setPropertyValue(propertyId, anyData.stringValue()); + break; + case TEXT: + final int prec = anyData.getMetaData().getPrecision(); + final NumberFormat numberFormat = NumberFormat.getInstance(Locale.US); + numberFormat.setGroupingUsed(false); + numberFormat.setMinimumFractionDigits(prec); + numberFormat.setMaximumFractionDigits(prec); + final double doubleValue = anyData.doubleValue(); + final String valueToString = numberFormat.format(doubleValue); + model.setPropertyValue(propertyId, valueToString); + break; + default: + break; + } + } + } diff -r 8288753ca865 -r 19cc159b4077 applications/plugins/org.csstudio.sds.components.epics/src/org/csstudio/sds/behavior/desy/AbstractDesyConnectionBehavior.java --- a/applications/plugins/org.csstudio.sds.components.epics/src/org/csstudio/sds/behavior/desy/AbstractDesyConnectionBehavior.java Tue Dec 13 17:02:37 2011 -0500 +++ b/applications/plugins/org.csstudio.sds.components.epics/src/org/csstudio/sds/behavior/desy/AbstractDesyConnectionBehavior.java Thu Dec 15 13:57:12 2011 -0500 @@ -46,7 +46,7 @@ AbstractDesyBehavior<W> { private final Set<String> _invisiblePropertyIds = new HashSet<String>(); - private String _userSetColor; + private String _userSetColor = ""; /** * Constructor. diff -r 8288753ca865 -r 19cc159b4077 applications/plugins/org.csstudio.sds.components.epics/src/org/csstudio/sds/behavior/desy/LabeConnectionBehavior.java --- a/applications/plugins/org.csstudio.sds.components.epics/src/org/csstudio/sds/behavior/desy/LabeConnectionBehavior.java Tue Dec 13 17:02:37 2011 -0500 +++ b/applications/plugins/org.csstudio.sds.components.epics/src/org/csstudio/sds/behavior/desy/LabeConnectionBehavior.java Thu Dec 15 13:57:12 2011 -0500 @@ -21,12 +21,9 @@ */ package org.csstudio.sds.behavior.desy; -import java.text.NumberFormat; -import java.util.Locale; import org.csstudio.sds.model.AbstractWidgetModel; import org.csstudio.sds.model.LabelModel; -import org.csstudio.sds.model.TextTypeEnum; import org.epics.css.dal.simple.AnyData; import org.epics.css.dal.simple.AnyDataChannel; import org.epics.css.dal.simple.MetaData; @@ -41,6 +38,8 @@ */ public class LabeConnectionBehavior extends AbstractDesyConnectionBehavior<LabelModel> { + private boolean _defTransparent; + /** * Constructor. */ @@ -55,6 +54,7 @@ @Override protected void doInitialize(final LabelModel widget) { super.doInitialize(widget); + _defTransparent = widget.getTransparent(); } /** @@ -64,18 +64,9 @@ protected void doProcessValueChange(final LabelModel model, final AnyData anyData) { super.doProcessValueChange(model, anyData); // .. fill level (influenced by current value) - if(model.getValueType().equals(TextTypeEnum.TEXT)) { - final int prec = anyData.getMetaData().getPrecision(); - final NumberFormat numberFormat = NumberFormat.getInstance(Locale.US); - numberFormat.setMinimumFractionDigits(prec); - numberFormat.setMaximumFractionDigits(prec); - final double doubleValue = anyData.doubleValue(); - final String valueToString = numberFormat.format(doubleValue); - model.setPropertyValue(LabelModel.PROP_TEXTVALUE, valueToString); - } else { - model.setPropertyValue(LabelModel.PROP_TEXTVALUE, anyData.stringValue()); - } - final boolean isTransparent = model.getTransparent()&&hasValue(anyData.getParentChannel()); + handleValueType(model, model.getValueType(), LabelModel.PROP_TEXTVALUE, anyData); + final boolean isTransparent = _defTransparent + && hasValue(anyData.getParentChannel()); model.setPropertyValue(LabelModel.PROP_TRANSPARENT, isTransparent); } @@ -83,15 +74,17 @@ * {@inheritDoc} */ @Override - protected void doProcessConnectionStateChange(final LabelModel widget, final AnyDataChannel anyDataChannel) { + protected void doProcessConnectionStateChange(final LabelModel widget, + final AnyDataChannel anyDataChannel) { super.doProcessConnectionStateChange(widget, anyDataChannel); - final boolean isTransparent = isConnected(anyDataChannel)&&widget.getTransparent()&&hasValue(anyDataChannel); + final boolean isTransparent = isConnected(anyDataChannel) && _defTransparent + && hasValue(anyDataChannel); widget.setPropertyValue(LabelModel.PROP_TRANSPARENT, isTransparent); } @Override - protected void doProcessMetaDataChange(final LabelModel widget, final MetaData metaData) { - // Nothing to do; - } + protected void doProcessMetaDataChange(final LabelModel widget, final MetaData metaData) { + // Nothing to do; + } } diff -r 8288753ca865 -r 19cc159b4077 applications/plugins/org.csstudio.sds.components.epics/src/org/csstudio/sds/behavior/desy/LabelAlarmBehavior.java --- a/applications/plugins/org.csstudio.sds.components.epics/src/org/csstudio/sds/behavior/desy/LabelAlarmBehavior.java Tue Dec 13 17:02:37 2011 -0500 +++ b/applications/plugins/org.csstudio.sds.components.epics/src/org/csstudio/sds/behavior/desy/LabelAlarmBehavior.java Thu Dec 15 13:57:12 2011 -0500 @@ -24,12 +24,8 @@ */ package org.csstudio.sds.behavior.desy; -import java.text.NumberFormat; -import java.util.Locale; - import org.csstudio.sds.model.AbstractWidgetModel; import org.csstudio.sds.model.LabelModel; -import org.csstudio.sds.model.TextTypeEnum; import org.epics.css.dal.simple.AnyData; import org.epics.css.dal.simple.AnyDataChannel; import org.epics.css.dal.simple.MetaData; @@ -69,17 +65,7 @@ protected void doProcessValueChange(final LabelModel model, final AnyData anyData) { super.doProcessValueChange(model, anyData); // .. fill level (influenced by current value) - if(model.getValueType().equals(TextTypeEnum.TEXT)) { - final int prec = anyData.getMetaData().getPrecision(); - final NumberFormat numberFormat = NumberFormat.getInstance(Locale.US); - numberFormat.setMinimumFractionDigits(prec); - numberFormat.setMaximumFractionDigits(prec); - final double doubleValue = anyData.doubleValue(); - final String valueToString = numberFormat.format(doubleValue); - model.setPropertyValue(LabelModel.PROP_TEXTVALUE, valueToString); - } else { - model.setPropertyValue(LabelModel.PROP_TEXTVALUE, anyData.stringValue()); - } + handleValueType(model, model.getValueType(), LabelModel.PROP_TEXTVALUE, anyData); final boolean isTransparent = model.getTransparent()&&hasValue(anyData.getParentChannel()); model.setPropertyValue(LabelModel.PROP_TRANSPARENT, isTransparent); } diff -r 8288753ca865 -r 19cc159b4077 applications/plugins/org.csstudio.sds.components.epics/src/org/csstudio/sds/behavior/desy/TextinputConnectionBehavior.java --- a/applications/plugins/org.csstudio.sds.components.epics/src/org/csstudio/sds/behavior/desy/TextinputConnectionBehavior.java Tue Dec 13 17:02:37 2011 -0500 +++ b/applications/plugins/org.csstudio.sds.components.epics/src/org/csstudio/sds/behavior/desy/TextinputConnectionBehavior.java Thu Dec 15 13:57:12 2011 -0500 @@ -22,7 +22,6 @@ import org.csstudio.sds.cursorservice.CursorService; import org.csstudio.sds.model.AbstractWidgetModel; import org.csstudio.sds.model.BorderStyleEnum; -import org.csstudio.sds.model.TextTypeEnum; import org.epics.css.dal.simple.AnyData; import org.epics.css.dal.simple.AnyDataChannel; import org.epics.css.dal.simple.MetaData; @@ -61,10 +60,6 @@ widget.setPropertyValue(AbstractWidgetModel.PROP_BORDER_STYLE, BorderStyleEnum.LOWERED.getIndex()); _defTransparent = widget.getBooleanProperty(TextInputModel.PROP_TRANSPARENT); - if(widget.getValueType().equals(TextTypeEnum.TEXT)) { - widget.setJavaType(String.class); - } - } |