From 5df6100f1d261d18d869e5de8832249370b78f3f Mon Sep 17 00:00:00 2001 From: Daniela Genius <genius@debussy.soc.lip6.fr> Date: Fri, 8 Nov 2019 13:54:10 +0100 Subject: [PATCH] DTDF (restricted) in TDF modules --- .../syscamstranslator/SysCAMSTBlockTDF.java | 12 +++- .../toSysCAMS/PrimitiveCode.java | 6 +- .../PrimitiveCodeCluster.java | 5 ++ src/main/java/ui/SysCAMSPanelTranslator.java | 3 +- src/main/java/ui/syscams/SysCAMSBlockTDF.java | 24 ++++++-- .../ui/window/JDialogSysCAMSBlockTDF.java | 61 ++++++++++++++++++- 6 files changed, 100 insertions(+), 11 deletions(-) diff --git a/src/main/java/syscamstranslator/SysCAMSTBlockTDF.java b/src/main/java/syscamstranslator/SysCAMSTBlockTDF.java index 083bb78420..94047747b4 100644 --- a/src/main/java/syscamstranslator/SysCAMSTBlockTDF.java +++ b/src/main/java/syscamstranslator/SysCAMSTBlockTDF.java @@ -55,6 +55,7 @@ import javax.swing.DefaultListModel; public class SysCAMSTBlockTDF extends SysCAMSTComponent { private String name; private double period; + private Boolean dynamic; private String time; private String processCode; private String constructorCode; @@ -73,9 +74,10 @@ public class SysCAMSTBlockTDF extends SysCAMSTComponent { private int n; private boolean isTimestepPropagated; - public SysCAMSTBlockTDF(String _name, double _period, String _time, String _processCode, String _constructorCode, DefaultListModel<String> _listStruct, String _nameTemplate, String _typeTemplate, String _valueTemplate, DefaultListModel<String> _listTypedef, SysCAMSTCluster _cluster) { + public SysCAMSTBlockTDF(String _name, double _period, Boolean _dynamic, String _time, String _processCode, String _constructorCode, DefaultListModel<String> _listStruct, String _nameTemplate, String _typeTemplate, String _valueTemplate, DefaultListModel<String> _listTypedef, SysCAMSTCluster _cluster) { name = _name; period = _period; + dynamic = _dynamic; time = _time; processCode = _processCode; constructorCode = _constructorCode; @@ -103,6 +105,14 @@ public class SysCAMSTBlockTDF extends SysCAMSTComponent { public void setPeriod(double _period) { period = _period; } + + public Boolean getDynamic() { + return dynamic; + } + + public void setDynamic(double _dynamic) { + dynamic = _dynamic; + } public String getTime() { return time; diff --git a/src/main/java/syscamstranslator/toSysCAMS/PrimitiveCode.java b/src/main/java/syscamstranslator/toSysCAMS/PrimitiveCode.java index 76e2bc879f..cbcb8d6448 100644 --- a/src/main/java/syscamstranslator/toSysCAMS/PrimitiveCode.java +++ b/src/main/java/syscamstranslator/toSysCAMS/PrimitiveCode.java @@ -321,7 +321,11 @@ public class PrimitiveCode { } } } - + if(tdf.getDynamic().equals(true)){ + corpsPrimitiveTDF = corpsPrimitiveTDF+"allow_dynamic_tfd();"+CR; + cpt2++; + } + if (cpt2 > 0) { corpsPrimitiveTDF = corpsPrimitiveTDF + "\t}" + CR2; } diff --git a/src/main/java/syscamstranslator/toSysCAMSCluster/PrimitiveCodeCluster.java b/src/main/java/syscamstranslator/toSysCAMSCluster/PrimitiveCodeCluster.java index 55d16f53e5..d504c399b1 100644 --- a/src/main/java/syscamstranslator/toSysCAMSCluster/PrimitiveCodeCluster.java +++ b/src/main/java/syscamstranslator/toSysCAMSCluster/PrimitiveCodeCluster.java @@ -330,6 +330,11 @@ public class PrimitiveCodeCluster { } } + if(tdf.getDynamic().equals(true)){ + corpsPrimitiveTDF = corpsPrimitiveTDF+"allow_dynamic_tfd();"+CR; + cpt2++; + } + if (cpt2 > 0) { corpsPrimitiveTDF = corpsPrimitiveTDF + "\t}" + CR2; } diff --git a/src/main/java/ui/SysCAMSPanelTranslator.java b/src/main/java/ui/SysCAMSPanelTranslator.java index 9d5480832f..448f0e5aef 100644 --- a/src/main/java/ui/SysCAMSPanelTranslator.java +++ b/src/main/java/ui/SysCAMSPanelTranslator.java @@ -201,6 +201,7 @@ public class SysCAMSPanelTranslator { String blockTDFName = blockTDF.getValue(); double periodBlock = blockTDF.getPeriod(); + Boolean dynamicBlock = blockTDF.getDynamic(); String timeBlock = blockTDF.getTime(); if (timeBlock.equals("s")) { timeBlock = timeBlock + "ec"; @@ -215,7 +216,7 @@ public class SysCAMSPanelTranslator { String valueTemplate = blockTDF.getValueTemplate(); DefaultListModel<String> listTypedef = blockTDF.getListTypedef(); - SysCAMSTBlockTDF syscamsBlockTDF = new SysCAMSTBlockTDF(blockTDFName, periodBlock, timeBlock, processCode, constructorCode, listStruct, nameTemplate, typeTemplate, valueTemplate, listTypedef, syscamsCluster); + SysCAMSTBlockTDF syscamsBlockTDF = new SysCAMSTBlockTDF(blockTDFName, periodBlock, dynamicBlock, timeBlock, processCode, constructorCode, listStruct, nameTemplate, typeTemplate, valueTemplate, listTypedef, syscamsCluster); List<SysCAMSPortTDF> portsTDF = blockTDF.getAllInternalPortsTDF(); for (int j = 0; j < portsTDF.size(); j++) { diff --git a/src/main/java/ui/syscams/SysCAMSBlockTDF.java b/src/main/java/ui/syscams/SysCAMSBlockTDF.java index 34f00f5abe..d96f53ef4a 100644 --- a/src/main/java/ui/syscams/SysCAMSBlockTDF.java +++ b/src/main/java/ui/syscams/SysCAMSBlockTDF.java @@ -60,13 +60,14 @@ import java.util.LinkedList; public class SysCAMSBlockTDF extends TGCScalableWithInternalComponent implements SwallowTGComponent, SwallowedTGComponent { private double period; + private Boolean dynamic; private String time; private String processCode; - private String constructorCode; + private String constructorCode; private DefaultListModel<String> listStruct; private String nameTemplate; private String typeTemplate; - private String valueTemplate; + private String valueTemplate; private DefaultListModel<String> listTypedef; private int maxFontSize = 14; @@ -107,15 +108,15 @@ public class SysCAMSBlockTDF extends TGCScalableWithInternalComponent implements value = tdp.findSysCAMSPrimitiveComponentName("blockTDF"); oldValue = value; name = "Primitive component - Block TDF"; - + setDynamic(false); setPeriod(-1); setTime(""); setProcessCode("void processing() {\n\n}"); - setConstructorCode(""); + setConstructorCode(""); setListStruct(new DefaultListModel<String>()); setNameTemplate(""); setTypeTemplate(""); - setValueTemplate(""); + setValueTemplate(""); setListTypedef(new DefaultListModel<String>()); myImageIcon = IconManager.imgic1202; @@ -318,6 +319,7 @@ public class SysCAMSBlockTDF extends TGCScalableWithInternalComponent implements protected String translateExtraParam() { StringBuffer sb = new StringBuffer("<extraparam>\n"); sb.append("<Attribute period=\"" + getPeriod()); + sb.append("\" dynamic=\"" + getDynamic()); sb.append("\" time=\"" + getTime()); sb.append("\" processCode=\"" + encode(getProcessCode())); sb.append("\" constructorCode=\"" + encode(getConstructorCode())); @@ -452,7 +454,7 @@ public class SysCAMSBlockTDF extends TGCScalableWithInternalComponent implements NodeList nli; Node n1, n2; Element elt; - + Boolean dynamic; double period; String time, processCode, constructorCode, listStruct, nameTemplate, typeTemplate, valueTemplate, listTypedef; @@ -466,6 +468,7 @@ public class SysCAMSBlockTDF extends TGCScalableWithInternalComponent implements elt = (Element) n2; if (elt.getTagName().equals("Attribute")) { period = Double.valueOf(elt.getAttribute("period")).doubleValue(); + dynamic = Boolean.valueOf(elt.getAttribute("dynamic")).booleanValue(); time = elt.getAttribute("time"); processCode = elt.getAttribute("processCode"); constructorCode = elt.getAttribute("constructorCode"); @@ -475,6 +478,7 @@ public class SysCAMSBlockTDF extends TGCScalableWithInternalComponent implements valueTemplate = elt.getAttribute("valueTemplate"); listTypedef = elt.getAttribute("listTypedef"); setPeriod(period); + setDynamic(dynamic); setTime(time); processCode = decode(processCode).toString(); setProcessCode(processCode); @@ -587,6 +591,14 @@ public class SysCAMSBlockTDF extends TGCScalableWithInternalComponent implements period = _period; } + public Boolean getDynamic() { + return dynamic; + } + + public void setDynamic(Boolean _dynamic) { + dynamic = _dynamic; + } + public String getTime() { return time; } diff --git a/src/main/java/ui/window/JDialogSysCAMSBlockTDF.java b/src/main/java/ui/window/JDialogSysCAMSBlockTDF.java index c88b695fd8..7df0519231 100644 --- a/src/main/java/ui/window/JDialogSysCAMSBlockTDF.java +++ b/src/main/java/ui/window/JDialogSysCAMSBlockTDF.java @@ -90,10 +90,14 @@ public class JDialogSysCAMSBlockTDF extends JDialog implements ActionListener, L private JTextArea processCodeTextArea; private String finalString; - private JTextArea constructorCodeTextArea; + private JTextArea constructorCodeTextArea; private SysCAMSBlockTDF block; - + private JRadioButton dynamicRadioButton; + //private String listDynamicString[]; + //private JComboBox<String> dynamicComboBoxString; + + public JDialogSysCAMSBlockTDF(SysCAMSBlockTDF block) { this.setTitle("Setting TDF Block Attributes"); this.setLocationRelativeTo(null); @@ -265,9 +269,50 @@ public class JDialogSysCAMSBlockTDF extends JDialog implements ActionListener, L gridBag.setConstraints(periodComboBoxString, constraints); attributesBoxPanel.add(periodComboBoxString); + + JPanel dynamicPanel = new JPanel(new FlowLayout()); + + dynamicRadioButton = new JRadioButton(); + dynamicRadioButton.setActionCommand("Dynamic"); + dynamicRadioButton.setSelected(block.getDynamic()); + dynamicRadioButton.addActionListener(this); + dynamicPanel.add(dynamicRadioButton); + JLabel dynamicLabel = new JLabel("Dynamic"); + dynamicPanel.add(dynamicLabel); + constraints = new GridBagConstraints(0, 4, 1, 1, 1.0, 1.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, + new Insets(15, 10, 5, 10), 0, 0); + gridBag.setConstraints(dynamicPanel, constraints); + attributesBoxPanel.add(dynamicPanel); + + + /* listDynamicString = new String[3]; + listDynamicString[0] = ""; + listDynamicString[1] = ""; + listDynamicString[2] = "accepts attribute changes"; + dynamicComboBoxString = new JComboBox<String>(listDynamicString); + if (block.getClockSensitivityMethod().equals("")) { + dynamicComboBoxString.setSelectedIndex(0); + } else if (block.getClockSensitivityMethod().equals("changes attributes")) { + dynamicComboBoxString.setSelectedIndex(1); + } else if (block.getClockSensitivityMethod().equals("accepts attribute changes")) { + dynamicComboBoxString.setSelectedIndex(2); + } + dynamicComboBoxString.setActionCommand("Dynamic_method"); + dynamicComboBoxString.setEnabled(block.getDynamic()); + dynamicComboBoxString.addActionListener(this); + constraints = new GridBagConstraints(1, 2, 1, 1, 1.0, 1.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, + new Insets(15, 10, 5, 10), 0, 0); + gridBag.setConstraints(dynamicComboBoxString, constraints); + //boxPanel.add(dynamicComboBoxString); + attributesBoxPanel.add(dynamicComboBoxString);*/ + + + + attributesBox.add(attributesBoxPanel); attributesMainPanel.add(attributesBox, BorderLayout.NORTH); + // --- Parameters ---// parametersMainPanel.setLayout(new BorderLayout()); @@ -688,6 +733,15 @@ public class JDialogSysCAMSBlockTDF extends JDialog implements ActionListener, L } public void actionPerformed(ActionEvent e) { + /*if ("Dynamic".equals(e.getActionCommand())) { + if (dynamicRadioButton.isSelected() == true) { + dynamicComboBoxString.setEnabled(true); + } else { + dynamicComboBoxString.setEnabled(false); + } + }*/ + + if ("OK".equals(e.getActionCommand())) { nameTypedefTextField.setEditable(true); typeTypedefComboBoxString.setEnabled(true); @@ -989,6 +1043,9 @@ public class JDialogSysCAMSBlockTDF extends JDialog implements ActionListener, L if ("Save_Close".equals(e.getActionCommand())) { block.setValue(new String(nameTextField.getText())); + block.setDynamic(dynamicRadioButton.isSelected()); + //block.setDynamicMethod((String) dynamicComboBoxString.getSelectedItem()); + if (!(periodTextField.getText().isEmpty())) { Boolean periodValueInteger = false; try { -- GitLab