diff --git a/ProgrammableLogicController-RELEASE.iml b/ProgrammableLogicController-RELEASE.iml
deleted file mode 100644
index cdffb78..0000000
--- a/ProgrammableLogicController-RELEASE.iml
+++ /dev/null
@@ -1,53 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index 9dd2f01..b586ae4 100644
--- a/pom.xml
+++ b/pom.xml
@@ -60,6 +60,8 @@
+ 1.8
+ 1.8
1.8
6.0.0
6.0.0
@@ -134,6 +136,13 @@
2.8.2
+
+
+ com.fasterxml.jackson.core
+ jackson-databind
+ 2.9.0
+
+
log4j
@@ -167,8 +176,9 @@
org.springframework.boot
spring-boot-maven-plugin
- ${java.version}
- ${java.version}
+
+ ${maven.compiler.source}
+ ${maven.compiler.target}
true
diff --git a/resources/icons/coil/edge.png b/resources/icons/coil/edge.png
new file mode 100644
index 0000000..5fdc1e7
Binary files /dev/null and b/resources/icons/coil/edge.png differ
diff --git a/resources/icons/misc/clipboard.png b/resources/icons/misc/clipboard.png
new file mode 100644
index 0000000..c0161ba
Binary files /dev/null and b/resources/icons/misc/clipboard.png differ
diff --git a/resources/routine/BIT RESET.xml b/resources/routine/BIT RESET.xml
index af95229..7deb850 100644
--- a/resources/routine/BIT RESET.xml
+++ b/resources/routine/BIT RESET.xml
@@ -7,7 +7,6 @@ CLR RLY567
MOVX @DPTR,A
-
-
+
\ No newline at end of file
diff --git a/resources/routine/Puneet Test1.xml b/resources/routine/Puneet Test1.xml
index 10baa34..8bde256 100644
--- a/resources/routine/Puneet Test1.xml
+++ b/resources/routine/Puneet Test1.xml
@@ -1,6 +1,40 @@
Testing
Puneet Test1
- ${INPUT1} + ${INPUT2}
-
+ MOV DPTR,#D${INPUT1}L ;DATA A
+MOVX A,@DPTR
+MOV TEMP,A
+MOV DPTR,#D${INPUT2}L ;DATA B
+MOVX A,@DPTR
+CLR C
+SUBB A, TEMP
+MOV DPTR,#D${INPUT1}L ;RESULT
+MOVX @DPTR,A
+MOV DPTR,#D${INPUT2}H
+MOVX A,@DPTR
+MOV TEMP,,A
+MOV DPTR,#D2006H
+MOVX A,@DPTR
+SUBB A,TEMP
+MOV DPTR,#D2008H ;RESULT
+MOVX @DPTR,A
+MOV DPTR,#RLY512_519+
+MOVX A,@DPTR
+MOV RLY517,C ;CARRY BIT
+MOVX @DPTR,A
+
+
+
+ 1
+ INPUT
+
+ DATA A
+
+
+ 2
+ INPUT
+
+ DATA B
+
+
\ No newline at end of file
diff --git a/resources/routine/SUBSTRACTION WITH ONE CONSTANT DATA.xml b/resources/routine/SUBSTRACTION WITH ONE CONSTANT DATA.xml
index 1e38db8..73cb353 100644
--- a/resources/routine/SUBSTRACTION WITH ONE CONSTANT DATA.xml
+++ b/resources/routine/SUBSTRACTION WITH ONE CONSTANT DATA.xml
@@ -3,7 +3,7 @@
SUBSTRACTION WITH ONE CONSTANT DATA
MOV A,#0E8H ; LSD OF CONSTANT DATA
MOV TEMP,A
-MOV DPTR,#D2006L ;DATA A
+MOV DPTR,#D${INPUT1}L ;DATA A
MOVX A,@DPTR
CLR C
SUBB A, TEMP
@@ -21,7 +21,12 @@ MOVX A,@DPTR
MOV RLY517,C ;CARRY BIT
MOVX @DPTR,A
-
+
+
+ 1
+ ${INPUT1}
+
+
\ No newline at end of file
diff --git a/src/main/java/org/grandviewtech/constants/ApplicationConstant.java b/src/main/java/org/grandviewtech/constants/ApplicationConstant.java
index b557471..7106016 100644
--- a/src/main/java/org/grandviewtech/constants/ApplicationConstant.java
+++ b/src/main/java/org/grandviewtech/constants/ApplicationConstant.java
@@ -33,7 +33,7 @@ public class ApplicationConstant
public static int SECTION_WIDTH = 130;
public static int SECTION_HEIGHT = 100;
- public static int MAX_CELL = 10;
+ final public static int MAX_CELL = 10;
public static int CUSTOM_BORDER_HEIGTH_OFFSET = 2;
- final public static String VERSION = "V 10.8.1";
+ final public static String VERSION = "V 10.11";
}
diff --git a/src/main/java/org/grandviewtech/constants/CustomDimension.java b/src/main/java/org/grandviewtech/constants/CustomDimension.java
index 3bdec5b..3deae7a 100644
--- a/src/main/java/org/grandviewtech/constants/CustomDimension.java
+++ b/src/main/java/org/grandviewtech/constants/CustomDimension.java
@@ -32,6 +32,7 @@ public class CustomDimension extends ApplicationConstant
public static Dimension CELL_SIZE = new Dimension(SECTION_WIDTH, SECTION_HEIGHT);
public static Dimension RUNG_SIZE = new Dimension(20, SECTION_HEIGHT);
public static Dimension LOAD_CONFIGURATION_SCREEN = new Dimension(350, 300);
+ public static Dimension EDGE_CONFIGURATION_SCREEN = new Dimension(350, 200);
public static Dimension OUTPUT_CONFIGURATION_SCREEN = new Dimension(350, 300);
public static Dimension ROUTINE_CONFIGURATION_SCREEN = new Dimension(800, 500);
public static Dimension RUNG_COMMENT_SCREEN = new Dimension(400, 250);
diff --git a/src/main/java/org/grandviewtech/constants/CustomIcon.java b/src/main/java/org/grandviewtech/constants/CustomIcon.java
index 36db467..0699f8b 100644
--- a/src/main/java/org/grandviewtech/constants/CustomIcon.java
+++ b/src/main/java/org/grandviewtech/constants/CustomIcon.java
@@ -31,6 +31,8 @@ public class CustomIcon
final public static ImageIcon COIL_JUMP = new ImageIcon(COIL_PATH + File.separator + "jump.png");
final public static ImageIcon COIL_END = new ImageIcon(COIL_PATH + File.separator + "end.png");
final public static ImageIcon COIL_ROUTINE = new ImageIcon(COIL_PATH + File.separator + "routine.png");
+ final public static ImageIcon EDGE_ROUTINE = new ImageIcon(COIL_PATH + File.separator + "edge.png");
+
final public static ImageIcon COIL_DELETE = new ImageIcon(COIL_PATH + File.separator + "delete.png");
final public static ImageIcon COIL_LABEL = new ImageIcon(COIL_PATH + File.separator + "label.png");
final public static ImageIcon ADVANCED_SEARCH_ICON = new ImageIcon(MISC_PATH + File.separator + "advancedsearch.png");
diff --git a/src/main/java/org/grandviewtech/entity/bo/Routine.java b/src/main/java/org/grandviewtech/entity/bo/Routine.java
index 7969c19..4a2f69b 100644
--- a/src/main/java/org/grandviewtech/entity/bo/Routine.java
+++ b/src/main/java/org/grandviewtech/entity/bo/Routine.java
@@ -3,21 +3,18 @@
import java.awt.Component;
import java.io.Serializable;
import java.util.ArrayList;
-import java.util.LinkedHashMap;
import java.util.List;
-import java.util.Map;
public class Routine implements Serializable
{
- private static final long serialVersionUID = 7598562241144944212L;
- private String description;
- private String name;
- private String functionalBlock;
- private Map inputs = new LinkedHashMap<>();
- private Map values = new LinkedHashMap<>();
- private String result;
+ private static final long serialVersionUID = 7598562241144944212L;
+ private String description;
+ private String name;
+ private String functionalBlock;
+ private List routineInputs = new ArrayList<>();
+ private String result;
- private List components = new ArrayList<>();
+ private List components = new ArrayList<>();
public String getDescription()
{
@@ -39,24 +36,6 @@ public void setName(String name)
this.name = name.trim();
}
- public Map getInputs()
- {
- if (this.inputs == null)
- {
- this.inputs = new LinkedHashMap<>();
- }
- return inputs;
- }
-
- public void setInputs(Map inputs)
- {
- if (this.inputs == null)
- {
- this.inputs = new LinkedHashMap<>();
- }
- this.inputs = inputs;
- }
-
public String getResult()
{
return result;
@@ -77,33 +56,24 @@ public void setFunctionalBlock(String functionalBlock)
this.functionalBlock = functionalBlock;
}
- public Routine(String name, String description, String functionalBlock, Map inputs, String result)
+ public List getRoutineInputs()
{
- super();
- this.description = description;
- this.name = name;
- this.functionalBlock = functionalBlock;
- this.inputs = inputs;
- this.result = result;
+ return routineInputs;
}
- public Map getValues()
+ public void setRoutineInputs(List routineInputs)
{
- if(values==null)
- {
- values=new LinkedHashMap<>();
- }
- return values;
+ this.routineInputs = routineInputs;
}
- public void addValue(Integer key, String value)
+ public Routine(String name, String description, String functionalBlock, List routineInputs, String result)
{
- System.out.println("Key : " + key + " | Value : " + value);
- if (this.values == null)
- {
- this.values = new LinkedHashMap<>();
- }
- this.values.put(key, value);
+ super();
+ this.description = description;
+ this.name = name;
+ this.functionalBlock = functionalBlock;
+ this.routineInputs = routineInputs;
+ this.result = result;
}
public List getComponents()
@@ -129,7 +99,7 @@ public Routine update(Routine routine)
this.description = routine.getDescription();
this.name = routine.getName();
this.functionalBlock = routine.getFunctionalBlock();
- this.inputs = routine.getInputs();
+ this.routineInputs = routine.getRoutineInputs();
this.result = routine.getResult();
return this;
}
diff --git a/src/main/java/org/grandviewtech/entity/bo/RoutineInput.java b/src/main/java/org/grandviewtech/entity/bo/RoutineInput.java
new file mode 100644
index 0000000..5186e25
--- /dev/null
+++ b/src/main/java/org/grandviewtech/entity/bo/RoutineInput.java
@@ -0,0 +1,69 @@
+package org.grandviewtech.entity.bo;
+
+public class RoutineInput
+ {
+ private int sequence;
+ private String type;
+ private String label;
+ private String name;
+ private String value;
+
+ public String getName()
+ {
+ return name;
+ }
+
+ public void setName(String name)
+ {
+ this.name = name;
+ }
+
+ public int getSequence()
+ {
+ return sequence;
+ }
+
+ public void setSequence(int sequence)
+ {
+ this.sequence = sequence;
+ }
+
+ public String getType()
+ {
+ return type;
+ }
+
+ public void setType(String type)
+ {
+ this.type = type;
+ }
+
+ public String getLabel()
+ {
+ if (label != null)
+ {
+ label = label.trim();
+ }
+ return label;
+ }
+
+ public void setLabel(String label)
+ {
+ this.label = label;
+ }
+
+ public String getValue()
+ {
+ if (value == null)
+ {
+ value = "";
+ }
+ return value;
+ }
+
+ public void setValue(String value)
+ {
+ this.value = value;
+ }
+
+ }
diff --git a/src/main/java/org/grandviewtech/entity/enums/CoilType.java b/src/main/java/org/grandviewtech/entity/enums/CoilType.java
index 4476131..7b28d3d 100644
--- a/src/main/java/org/grandviewtech/entity/enums/CoilType.java
+++ b/src/main/java/org/grandviewtech/entity/enums/CoilType.java
@@ -24,7 +24,7 @@
public enum CoilType
{
- LABEL("LABEL"), END("END"), JUMP("JUMP"), OUTPUT("OUTPUT"), LINE("LINE"), LOAD("LOAD"), ROUTINE("ROUTINE"), LEFT_LINK("LEFT_LINK"), RIGHT_LINK("RIGHT_LINK"), PARALLEL("PARALLEL"), DEFAULT("DEFAULT"), DELETE("DELETE");
+ SIGNAL("SIGNAL"), LABEL("LABEL"), END("END"), JUMP("JUMP"), OUTPUT("OUTPUT"), EDGE("EDGE"), LINE("LINE"), LOAD("LOAD"), ROUTINE("ROUTINE"), LEFT_LINK("LEFT_LINK"), RIGHT_LINK("RIGHT_LINK"), PARALLEL("PARALLEL"), DEFAULT("DEFAULT"), DELETE("DELETE");
private String coilType;
private CoilType(String coilType)
diff --git a/src/main/java/org/grandviewtech/entity/enums/Signal.java b/src/main/java/org/grandviewtech/entity/enums/Signal.java
index d24f954..cd5bda8 100644
--- a/src/main/java/org/grandviewtech/entity/enums/Signal.java
+++ b/src/main/java/org/grandviewtech/entity/enums/Signal.java
@@ -2,5 +2,5 @@
public enum Signal
{
- RISING, FAILING, NO, NC , NONE
+ RISING, FALLING, NO, NC, NONE
}
diff --git a/src/main/java/org/grandviewtech/runner/Application.java b/src/main/java/org/grandviewtech/runner/Application.java
index 6246bc8..4577817 100644
--- a/src/main/java/org/grandviewtech/runner/Application.java
+++ b/src/main/java/org/grandviewtech/runner/Application.java
@@ -15,13 +15,8 @@
import org.grandviewtech.service.system.Printer;
import org.grandviewtech.service.system.SystemFileLocation;
import org.grandviewtech.userinterface.screen.BackGroundLayer;
-import org.springframework.boot.CommandLineRunner;
-import org.springframework.boot.SpringBootConfiguration;
-import org.springframework.context.annotation.Configuration;
-@Configuration
-@SpringBootConfiguration
-public class Application implements CommandLineRunner
+public class Application
{
private static org.apache.log4j.Logger logger = org.apache.log4j.Logger.getLogger(Application.class);
@@ -124,8 +119,7 @@ public static org.grandviewtech.entity.helper.Dimension calculateCenterAlignment
return dm;
}
- @Override
- public void run(String... arg0) throws Exception
+ public static void run()
{
try
{
diff --git a/src/main/java/org/grandviewtech/runner/Run.java b/src/main/java/org/grandviewtech/runner/Run.java
index ce43b13..a7c54e5 100644
--- a/src/main/java/org/grandviewtech/runner/Run.java
+++ b/src/main/java/org/grandviewtech/runner/Run.java
@@ -15,8 +15,6 @@
import org.apache.log4j.PropertyConfigurator;
import org.grandviewtech.service.system.PropertyReader;
import org.grandviewtech.service.system.SystemFileLocation;
-import org.springframework.boot.Banner;
-import org.springframework.boot.SpringApplication;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;
@@ -95,10 +93,11 @@ private static void initiateLogo()
public static void main(String[] args)
{
initiateLogo();
- SpringApplication springApplication = new SpringApplication(Application.class);
+ Application.run();
+ /*SpringApplication springApplication = new SpringApplication(Application.class);
springApplication.setHeadless(false);
springApplication.setBannerMode(Banner.Mode.OFF);
springApplication.setWebEnvironment(false);
- springApplication.run(args);
+ springApplication.run(args);*/
}
}
diff --git a/src/main/java/org/grandviewtech/service/execution/CompileService.java b/src/main/java/org/grandviewtech/service/execution/CompileService.java
index 421f501..f8b0935 100644
--- a/src/main/java/org/grandviewtech/service/execution/CompileService.java
+++ b/src/main/java/org/grandviewtech/service/execution/CompileService.java
@@ -1,9 +1,6 @@
package org.grandviewtech.service.execution;
import java.io.IOException;
-import java.io.StringReader;
-import java.util.LinkedHashMap;
-import java.util.Map;
import java.util.StringJoiner;
import org.grandviewtech.entity.bo.Routine;
@@ -15,10 +12,8 @@
import org.grandviewtech.userinterface.screen.ColumnScreen;
import org.grandviewtech.userinterface.screen.PreferenceScreen;
import org.grandviewtech.userinterface.screen.RowScreen;
-import org.springframework.ui.freemarker.FreeMarkerTemplateUtils;
import freemarker.template.Configuration;
-import freemarker.template.Template;
import freemarker.template.Version;
public abstract class CompileService
@@ -72,7 +67,7 @@ public static void generateAsmFile() throws IOException
}
case OUTPUT:
{
- OUTPUT_TYPE outputType = findOutputType(column.getNonc());
+ OUTPUT_TYPE outputType = null;//findOutputType(column.getNonc());
output(joiner, input, outputType, label);
break;
}
@@ -89,7 +84,7 @@ public static void generateAsmFile() throws IOException
else if (coilType.equals(CoilType.OUTPUT))
{
int value = new Integer(column.getValue());
- OUTPUT_TYPE outputType = findOutputType(column.getNonc());
+ OUTPUT_TYPE outputType = null;//findOutputType(column.getNonc());
output(joiner, value, outputType, label);
}
else if (coilType.equals(CoilType.ROUTINE))
@@ -123,6 +118,7 @@ private static void routine(StringJoiner joiner, Routine routine) throws IOExcep
{
try
{
+ /*
Map dataset = new LinkedHashMap<>();
for (Map.Entry value : routine.getValues().entrySet())
{
@@ -132,7 +128,7 @@ private static void routine(StringJoiner joiner, Routine routine) throws IOExcep
configuration.setNumberFormat("0.######");
Template template = new Template("templateBody", new StringReader(routine.getFunctionalBlock()), configuration);
joiner.add(FreeMarkerTemplateUtils.processTemplateIntoString(template, dataset));
- }
+ */}
catch (Exception exception)
{
}
@@ -175,23 +171,23 @@ private static void output(StringJoiner joiner, int input, OUTPUT_TYPE outputTyp
case RESET:
{
- joiner.add("JNC "+label);
+ joiner.add("JNC " + label);
joiner.add("MOV DTPR , #OUTPUT0_7+" + params[0]);
joiner.add("MOV X A,@DPTR");
joiner.add("MOV ACC." + params[1] + " , C");
joiner.add("MOVX @DPTR,A");
- joiner.add(label+" :");
+ joiner.add(label + " :");
break;
}
case SET:
{
- joiner.add("JNC "+label);
+ joiner.add("JNC " + label);
joiner.add("MOV DTPR , #OUTPUT0_7+" + params[0]);
joiner.add("MOV X A,@DPTR");
joiner.add("MOV ACC." + params[1] + " , C");
joiner.add("MOVX @DPTR,A");
joiner.add("SETB "); // NO UNDERSTANDING OF RLY
- joiner.add(label+" :");
+ joiner.add(label + " :");
break;
}
case NONE:
@@ -218,8 +214,7 @@ public static String[] findParam(Integer input)
{
input = input * -1;
}
- return new String[]
- { intTohex(input / 8), intTohex(input % 8) };
+ return new String[] { intTohex(input / 8), intTohex(input % 8) };
}
private static String intTohex(int integer)
diff --git a/src/main/java/org/grandviewtech/service/searching/SearchEngine.java b/src/main/java/org/grandviewtech/service/searching/SearchEngine.java
index 6317876..106427c 100644
--- a/src/main/java/org/grandviewtech/service/searching/SearchEngine.java
+++ b/src/main/java/org/grandviewtech/service/searching/SearchEngine.java
@@ -94,14 +94,14 @@ public static void index(ColumnScreen columnScreen)
document.add(new TextField("tag", columnScreen.getTag(), Field.Store.NO));
document.add(new TextField("value", columnScreen.getValue(), Field.Store.NO));
document.add(new TextField("coil", columnScreen.getCoilType().getCoilType(), Field.Store.NO));
- if (columnScreen.getNonc() != null && !columnScreen.getNonc().equals(NoNc.DEFAULT))
- {
+ /*if (columnScreen.getNonc() != null && !columnScreen.getNonc().equals(NoNc.DEFAULT))
+ {
document.add(new TextField("nonc", columnScreen.getNonc().name(), Field.Store.NO));
}
if (columnScreen.getEdge() != null && !columnScreen.getEdge().equals(Edge.DEFAULT))
{
document.add(new TextField("edge", columnScreen.getEdge().name(), Field.Store.NO));
- }
+ }*/
indexWriter.addDocument(document);
indexWriter.commit();
}
diff --git a/src/main/java/org/grandviewtech/service/system/FeedBack.java b/src/main/java/org/grandviewtech/service/system/FeedBack.java
index 71154d6..fa00ced 100644
--- a/src/main/java/org/grandviewtech/service/system/FeedBack.java
+++ b/src/main/java/org/grandviewtech/service/system/FeedBack.java
@@ -1,14 +1,8 @@
package org.grandviewtech.service.system;
-import java.util.Date;
-import java.util.Properties;
-
-import org.springframework.mail.MailSender;
-import org.springframework.mail.SimpleMailMessage;
-import org.springframework.mail.javamail.JavaMailSenderImpl;
-
public class FeedBack
{
+ /*
public static void sendFeedBack(SimpleMailMessage simpleMailMessage)
{
MailSender mailSender = getMailSender();
@@ -41,4 +35,4 @@ public static void main(String[] args)
simpleMailMessage.setSentDate(new Date());
sendFeedBack(simpleMailMessage);
}
- }
+ */}
diff --git a/src/main/java/org/grandviewtech/userinterface/coils/PaintCoilsOnScreen.java b/src/main/java/org/grandviewtech/userinterface/coils/PaintCoilsOnScreen.java
index 2e7e795..9e8b99d 100644
--- a/src/main/java/org/grandviewtech/userinterface/coils/PaintCoilsOnScreen.java
+++ b/src/main/java/org/grandviewtech/userinterface/coils/PaintCoilsOnScreen.java
@@ -27,30 +27,34 @@
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.geom.QuadCurve2D;
-import java.util.Map;
import javax.swing.JLabel;
+import org.apache.log4j.Logger;
import org.grandviewtech.constants.ApplicationConstant;
import org.grandviewtech.constants.CustomFont;
import org.grandviewtech.entity.bo.ClipBoard;
import org.grandviewtech.entity.bo.Routine;
+import org.grandviewtech.entity.bo.RoutineInput;
import org.grandviewtech.entity.bo.Screen;
import org.grandviewtech.entity.enums.CoilType;
-import org.grandviewtech.entity.enums.Edge;
import org.grandviewtech.entity.enums.InputType;
import org.grandviewtech.entity.enums.LoadType;
import org.grandviewtech.entity.enums.NoNc;
+import org.grandviewtech.entity.enums.Signal;
import org.grandviewtech.userinterface.helper.ColumnScreenGenerator;
import org.grandviewtech.userinterface.screen.ColumnScreen;
import org.grandviewtech.userinterface.screen.RowScreen;
public class PaintCoilsOnScreen
{
- final static Screen SCREEN = Screen.getInstance();
+ private static final Logger LOGGER = Logger.getLogger(PaintCoilsOnScreen.class);
+
+ final static Screen SCREEN = Screen.getInstance();
public static void paintDragOption(ColumnScreen columnScreen, Graphics graphics)
{
+ LOGGER.info("PAINTING row : " + columnScreen.getRowNumber() + " | col : " + columnScreen.getColumnNumber());
CoilType coilType = columnScreen.getCoilType();
coilType = (coilType == null) ? CoilType.DEFAULT : coilType;
if (columnScreen.getCoilType() != null && (columnScreen.getCoilType().getCoilType().equals(CoilType.DEFAULT.getCoilType()) == false))
@@ -66,18 +70,27 @@ public static void paintDragOption(ColumnScreen columnScreen, Graphics graphics)
private static void paintLoadCoil(ColumnScreen columnScreen, Graphics graphics)
{
-
+ //int offset = 6;
+ //graphics.drawLine(0, ApplicationConstant.SECTION_HEIGHT / 2, (ApplicationConstant.SECTION_WIDTH / 2) - offset, ApplicationConstant.SECTION_HEIGHT / 2);
+ //graphics.drawLine((ApplicationConstant.SECTION_WIDTH / 2) - offset, (ApplicationConstant.SECTION_HEIGHT / 2) - offset, (ApplicationConstant.SECTION_WIDTH / 2) - offset, (ApplicationConstant.SECTION_HEIGHT / 2) + offset);
+ //graphics.drawLine((ApplicationConstant.SECTION_WIDTH / 2) + offset, (ApplicationConstant.SECTION_HEIGHT / 2) - offset, (ApplicationConstant.SECTION_WIDTH / 2) + offset, (ApplicationConstant.SECTION_HEIGHT / 2) + offset);
+ //graphics.drawLine((ApplicationConstant.SECTION_WIDTH / 2) + offset, ApplicationConstant.SECTION_HEIGHT / 2, (ApplicationConstant.SECTION_WIDTH), ApplicationConstant.SECTION_HEIGHT / 2);
+ paintSignalCoil(columnScreen, graphics);
+ }
+
+ public static void paintSignalCoil(ColumnScreen component, Graphics graphics)
+ {
+ Signal signal = component.getSignal();
int offset = 6;
graphics.drawLine(0, ApplicationConstant.SECTION_HEIGHT / 2, (ApplicationConstant.SECTION_WIDTH / 2) - offset, ApplicationConstant.SECTION_HEIGHT / 2);
graphics.drawLine((ApplicationConstant.SECTION_WIDTH / 2) - offset, (ApplicationConstant.SECTION_HEIGHT / 2) - offset, (ApplicationConstant.SECTION_WIDTH / 2) - offset, (ApplicationConstant.SECTION_HEIGHT / 2) + offset);
graphics.drawLine((ApplicationConstant.SECTION_WIDTH / 2) + offset, (ApplicationConstant.SECTION_HEIGHT / 2) - offset, (ApplicationConstant.SECTION_WIDTH / 2) + offset, (ApplicationConstant.SECTION_HEIGHT / 2) + offset);
graphics.drawLine((ApplicationConstant.SECTION_WIDTH / 2) + offset, ApplicationConstant.SECTION_HEIGHT / 2, (ApplicationConstant.SECTION_WIDTH), ApplicationConstant.SECTION_HEIGHT / 2);
- Edge edge = columnScreen.getEdge();
- if (edge != null)
+ if (signal != null)
{
int lengthOffset = 4;
int heightOffset = offset;
- switch (edge)
+ switch (signal)
{
case FALLING:
{
@@ -99,12 +112,18 @@ private static void paintLoadCoil(ColumnScreen columnScreen, Graphics graphics)
graphics.drawLine((ApplicationConstant.SECTION_WIDTH / 2), (ApplicationConstant.SECTION_HEIGHT / 2) - (heightOffset), (ApplicationConstant.SECTION_WIDTH / 2) + lengthOffset, (ApplicationConstant.SECTION_HEIGHT / 2));
break;
}
+ case NC:
+ {
+ graphics.drawLine((ApplicationConstant.SECTION_WIDTH / 2) - offset * 2, (ApplicationConstant.SECTION_HEIGHT / 2) + (offset * 2), (ApplicationConstant.SECTION_WIDTH / 2) + offset * 2, (ApplicationConstant.SECTION_HEIGHT / 2) - (offset * 2));
+ break;
+ }
+ case NO:
+ {
+ break;
+ }
+
}
}
- if (columnScreen.getNonc().getType().equalsIgnoreCase(NoNc.NC.getType()))
- {
- graphics.drawLine((ApplicationConstant.SECTION_WIDTH / 2) - offset * 2, (ApplicationConstant.SECTION_HEIGHT / 2) + (offset * 2), (ApplicationConstant.SECTION_WIDTH / 2) + offset * 2, (ApplicationConstant.SECTION_HEIGHT / 2) - (offset * 2));
- }
}
@@ -118,18 +137,16 @@ public static void paintRoutineCoil(ColumnScreen component, Graphics graphics)
graphics.drawLine(0, ApplicationConstant.SECTION_HEIGHT - offset, (ApplicationConstant.SECTION_WIDTH - offset), ApplicationConstant.SECTION_HEIGHT - offset);
int counter = 1;
int height = 10;
- if (routine.getInputs() != null)
+
+ for (RoutineInput input : routine.getRoutineInputs())
{
- for (Map.Entry input : routine.getInputs().entrySet())
- {
- String value = routine.getValues().get(input.getKey());
- JLabel label = new JLabel("I(" + input.getKey() + ") : " + value);
- label.setName(value);
- label.setBounds(5, ((counter % 2 == 0) ? height = height + 20 : height), 100, 50);
- component.add(label);
- routine.setComponent(label);
- counter = counter + 1;
- }
+ String value = input.getValue();
+ JLabel label = new JLabel(input.getName() + " : " + value);
+ label.setName(value);
+ label.setBounds(5, ((counter % 2 == 0) ? height = height + 20 : height), 100, 50);
+ component.add(label);
+ routine.setComponent(label);
+ counter = counter + 1;
}
}
@@ -139,6 +156,7 @@ private static void paintOutputCoil(Component component, Graphics graphics)
if (component instanceof ColumnScreen)
{
+
ColumnScreen columnScreen = (ColumnScreen) component;
NoNc nonc = columnScreen.getNonc();
InputType inputType = columnScreen.getInputType();
@@ -149,28 +167,29 @@ private static void paintOutputCoil(Component component, Graphics graphics)
if (currentColumnNumber < ApplicationConstant.MAX_CELL)
{
int currentRowNumber = columnScreen.getRowNumber();
+ RowScreen rowScreen = SCREEN.getRow(currentRowNumber);
for (int i$ = currentColumnNumber; i$ <= ApplicationConstant.MAX_CELL; i$++)
{
- RowScreen rowScreen = SCREEN.getRow(currentRowNumber);
if (rowScreen != null)
{
ColumnScreen tempScreen = rowScreen.getColumnScreens(i$);
if (i$ < ApplicationConstant.MAX_CELL)
{
- tempScreen.reset();
+ tempScreen.reset(false);
tempScreen.setCoilType(CoilType.LINE);
tempScreen.apply();
}
else if (i$ == ApplicationConstant.MAX_CELL)
{
- tempScreen.reset();
+ tempScreen.reset(false);
tempScreen.setCoilType(CoilType.OUTPUT);
- tempScreen.setInputType(inputType);
- tempScreen.setValue(value);
tempScreen.setNonc(nonc);
- tempScreen.getValueLabel().setText(valueLabel);
+ tempScreen.setInputType(inputType);
+ tempScreen.setValue(valueLabel);
+ tempScreen.getValueLabel().setText(value);
tempScreen.setTag(tag);
- //tempScreen.apply();
+ tempScreen.apply();
+ break;
}
//tempScreen.repaint();
}
@@ -178,11 +197,11 @@ else if (i$ == ApplicationConstant.MAX_CELL)
}
else if (currentColumnNumber == ApplicationConstant.MAX_CELL)
{
+
paintOutPutCoil(columnScreen, graphics);
//columnScreen.revalidate();
- columnScreen.apply();
}
-
+
}
}
@@ -224,6 +243,7 @@ private static void paintNamedCoil(Component component, Graphics graphics, Strin
private static void paintOutPutCoil(Component component, Graphics graphics)
{
//o
+
int offsetY = 8;
int offsetX = 10;
graphics.setColor(Color.BLACK);
@@ -293,13 +313,15 @@ private static void paintLoadTypeCoil(boolean isParent, LoadType loadType, Colum
parent.getGraphics().drawLine(0, ApplicationConstant.SECTION_HEIGHT / 2, 0, ApplicationConstant.SECTION_HEIGHT);
}
graphics.drawLine(0, 0, 0, ApplicationConstant.SECTION_HEIGHT / 2);
- /*
- * if (parent != null) {
- * child.setAbove(parent);
- * parent.setParent(true);
- * parent.setChildType(CoilType.
- * LEFT_LINK); }
- */
+
+ if (parent != null)
+ {
+ child.setAbove(parent);
+ parent.setParent(true);
+ parent.setChildType(CoilType.LEFT_LINK);
+ parent.repaint();
+ }
+
break;
}
case RIGHT_LINK:
@@ -309,24 +331,17 @@ private static void paintLoadTypeCoil(boolean isParent, LoadType loadType, Colum
parent.getGraphics().drawLine(ApplicationConstant.SECTION_WIDTH - 1, ApplicationConstant.SECTION_HEIGHT / 2, ApplicationConstant.SECTION_WIDTH - 1, ApplicationConstant.SECTION_HEIGHT);
}
graphics.drawLine(ApplicationConstant.SECTION_WIDTH - 1, 0, ApplicationConstant.SECTION_WIDTH - 1, ApplicationConstant.SECTION_HEIGHT / 2);
- /*
- * if (parent != null) {
- * child.setAbove(parent);
- * parent.setParent(true);
- * parent.setChildType(CoilType.
- * RIGHT_LINK); parent.repaint(); }
- */
+ if (parent != null)
+ {
+ child.setAbove(parent);
+ parent.setParent(true);
+ parent.setChildType(CoilType.RIGHT_LINK);
+ parent.repaint();
+ }
break;
}
}
- // if (parent != null)
- // {
- // parent.revalidate();
- // parent.repaint();
- // }
- // child.revalidate();
- // child.repaint();
}
}
@@ -377,6 +392,11 @@ private static void paint(ColumnScreen current, Graphics graphics, CoilType coil
paintNamedCoil(current, graphics, coilType.getCoilType());
break;
}
+ case EDGE:
+ {
+ paintSignalCoil(current, graphics);
+ break;
+ }
case END:
{
paintNamedCoil(current, graphics, coilType.getCoilType());
@@ -393,11 +413,13 @@ private static void paint(ColumnScreen current, Graphics graphics, CoilType coil
}
case LEFT_LINK:
{
- /*
- * ColumnScreen parent =
- * current.getAbove(false); if (parent != null)
- * { parent.setChildType(CoilType.LEFT_LINK); }
- */
+
+ ColumnScreen parent = current.getAbove(false);
+ if (parent != null)
+ {
+ parent.setChildType(CoilType.LEFT_LINK);
+ }
+
current.setCoilType(coilType);
paintLoadCoil(current, graphics);
paintLoadTypeCoil(current.isParent(), LoadType.LEFT_LINK, current, graphics);
@@ -405,11 +427,13 @@ private static void paint(ColumnScreen current, Graphics graphics, CoilType coil
}
case PARALLEL:
{
- /*
- * ColumnScreen parent =
- * current.getAbove(false); if (parent != null)
- * { parent.setChildType(CoilType.PARALLEL); }
- */
+
+ ColumnScreen parent = current.getAbove(false);
+ if (parent != null)
+ {
+ parent.setChildType(CoilType.PARALLEL);
+ }
+
current.setCoilType(coilType);
paintLoadCoil(current, graphics);
paintLoadTypeCoil(current.isParent(), LoadType.LEFT_LINK, current, graphics);
@@ -418,11 +442,13 @@ private static void paint(ColumnScreen current, Graphics graphics, CoilType coil
}
case RIGHT_LINK:
{
- /*
- * ColumnScreen parent =
- * current.getAbove(false); if (parent != null)
- * { parent.setChildType(CoilType.RIGHT_LINK); }
- */
+
+ ColumnScreen parent = current.getAbove(false);
+ if (parent != null)
+ {
+ parent.setChildType(CoilType.RIGHT_LINK);
+ }
+
current.setCoilType(coilType);
paintLoadCoil(current, graphics);
paintLoadTypeCoil(current.isParent(), LoadType.RIGHT_LINK, current, graphics);
diff --git a/src/main/java/org/grandviewtech/userinterface/listeners/RungActionListerner.java b/src/main/java/org/grandviewtech/userinterface/listeners/RungActionListerner.java
index 8d209d8..a5bbabd 100644
--- a/src/main/java/org/grandviewtech/userinterface/listeners/RungActionListerner.java
+++ b/src/main/java/org/grandviewtech/userinterface/listeners/RungActionListerner.java
@@ -25,6 +25,7 @@
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
+import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
@@ -112,9 +113,7 @@ public void actionPerformed(ActionEvent event)
}
break;
}
-
}
-
}
private void delete()
@@ -155,30 +154,32 @@ private void copy()
private void paste()
{
int i$ = 0;
- for (int rowNumber = currentRungNumber; rowNumber < currentRungNumber + ClipBoard.getCopiedRung().size(); rowNumber++)
+ List copied = ClipBoard.getCopiedRung();
+ if (copied.size() > 0)
{
- RowScreen copiedRow = screen.getRow(ClipBoard.getCopiedRung().get(i$).getRowNumber());
- RowScreen pasteRow = screen.getRow(rowNumber);
- logger.warn("Pasting Row:" + rowNumber);
- int columnIndex = 1;
- for (ColumnScreen pasteColumn : pasteRow.getAllColumnScreens())
+ Collections.sort(copied);
+ for (int rowNumber = currentRungNumber; rowNumber < currentRungNumber + copied.size(); rowNumber++)
{
- ColumnScreen copiedColumn = copiedRow.getColumnScreens(columnIndex);
- if (copiedColumn.isBlank() == false)
+ RowScreen copiedRow = screen.getRow(copied.get(i$).getRowNumber());
+ RowScreen pasteRow = screen.getRow(rowNumber);
+ logger.warn("Pasting Row:" + rowNumber);
+ int columnIndex = 1;
+ for (ColumnScreen pasteColumn : pasteRow.getAllColumnScreens())
{
- pasteColumn.update(copiedColumn);
+ ColumnScreen copiedColumn = copiedRow.getColumnScreens(columnIndex);
+ if (copiedColumn.isBlank() == false)
+ {
+ pasteColumn.update(copiedColumn);
+ }
+ if (ClipBoard.getClipboardAction() == CLIPBOARD_ACTION.CUT)
+ {
+ copiedColumn.reset(true);
+ }
+ columnIndex = columnIndex + 1;
+
}
- if (ClipBoard.getClipboardAction() == CLIPBOARD_ACTION.CUT)
- {
- copiedColumn.reset();
- }
- columnIndex = columnIndex + 1;
-
+ i$ = i$ + 1;
}
- i$ = i$ + 1;
}
- /*
- * if (ClipBoard.getClipboardAction() == CLIPBOARD_ACTION.CUT) { Set deletedRowNumbers = new LinkedHashSet(); List copiedRungs = ClipBoard.getCopiedRung(); Collections.sort(copiedRungs); for (Rung rung : copiedRungs) { deletedRowNumbers.add(rung.getRowNumber()); } RowGenerator.deleteRows(deletedRowNumbers); }
- */
}
}
diff --git a/src/main/java/org/grandviewtech/userinterface/listeners/RungListener.java b/src/main/java/org/grandviewtech/userinterface/listeners/RungListener.java
index 3b6d621..6f3d720 100644
--- a/src/main/java/org/grandviewtech/userinterface/listeners/RungListener.java
+++ b/src/main/java/org/grandviewtech/userinterface/listeners/RungListener.java
@@ -61,15 +61,11 @@ public void mouseClicked(MouseEvent mouseEvent)
editMenu.show(rung, rung.getX() + 22, rung.getY());
//
}
- if (ClipBoard.isControlKeyActive() == false)
+ ClipBoard.addTempRung(rung);
+ if (!isRightClick)
{
- if (!isRightClick)
- {
- ClipBoard.addTempRung(rung);
- }
- rung.setBackground(Color.GREEN);
}
-
+ rung.setBackground(Color.GREEN);
}
@Override
diff --git a/src/main/java/org/grandviewtech/userinterface/misc/ActionBot.java b/src/main/java/org/grandviewtech/userinterface/misc/ActionBot.java
index 3aea820..072479d 100644
--- a/src/main/java/org/grandviewtech/userinterface/misc/ActionBot.java
+++ b/src/main/java/org/grandviewtech/userinterface/misc/ActionBot.java
@@ -77,8 +77,7 @@ public static void pasteColumn()
while (i$.hasNext())
{
ColumnScreen columnScreen = i$.next();
- columnScreen.reset();
- columnScreen.repaint();
+ columnScreen.reset(true);
}
}
diff --git a/src/main/java/org/grandviewtech/userinterface/misc/CustomToolBar.java b/src/main/java/org/grandviewtech/userinterface/misc/CustomToolBar.java
index 918bd88..1f26c39 100644
--- a/src/main/java/org/grandviewtech/userinterface/misc/CustomToolBar.java
+++ b/src/main/java/org/grandviewtech/userinterface/misc/CustomToolBar.java
@@ -141,6 +141,8 @@ public static void setCoilTypeFunctions()
{
DragLabel load = new DragLabel(CustomIcon.COIL_LOAD, CoilType.LOAD.getCoilType());
DragLabel line = new DragLabel(CustomIcon.COIL_LINE, CoilType.LINE.getCoilType());
+
+ DragLabel edge = new DragLabel(CustomIcon.EDGE_ROUTINE, CoilType.EDGE.getCoilType());
//
DragLabel parellel = new DragLabel(CustomIcon.COIL_PARALLEL, CoilType.PARALLEL.getCoilType());
DragLabel leftLink = new DragLabel(CustomIcon.COIL_LEFT_LINK, CoilType.LEFT_LINK.getCoilType());
@@ -171,19 +173,19 @@ public static void setCoilTypeFunctions()
{
if (!activeColumn.isBlank())
{
- activeColumn.reset();
+ activeColumn.reset(true);
activities.addActivity(new Activity("Cell( " + activeColumn.getRowNumber() + " , " + activeColumn.getColumnNumber() + " ) " + activeColumn.getRowNumber() + " is deleted", Activity.Category.USER));
message = "Cell( " + activeColumn.getRowNumber() + " , " + activeColumn.getColumnNumber() + " ) Successfully Deleted.";
RowValidation.validateNeighBourHood(activeColumn);
}
else
{
- activeColumn.reset();
+ activeColumn.reset(true);
activities.addActivity(new Activity("Cell( " + activeColumn.getRowNumber() + " , " + activeColumn.getColumnNumber() + " ) " + activeColumn.getRowNumber() + " is attempted to delete but cell was empty", Activity.Category.USER));
message = "Cell( " + activeColumn.getRowNumber() + " , " + activeColumn.getColumnNumber() + " is Empty";
RowValidation.validateNeighBourHood(activeColumn);
}
- activeColumn.reset();
+ activeColumn.reset(true);
activities.addActivity(new Activity("Cell( " + activeColumn.getRowNumber() + " , " + activeColumn.getColumnNumber() + " ) " + activeColumn.getRowNumber() + " is deleted", Activity.Category.USER));
message = "Cell( " + activeColumn.getRowNumber() + " , " + activeColumn.getColumnNumber() + " ) Successfully Deleted.";
RowValidation.validateNeighBourHood(activeColumn);
@@ -207,6 +209,8 @@ public static void setCoilTypeFunctions()
});
toolBar.add(load);
toolBar.add(line);
+ toolBar.add(edge);
+
// toolBar.add(compile);
toolBar.add(output);
toolBar.add(parellel);
diff --git a/src/main/java/org/grandviewtech/userinterface/screen/ColumnConfigurationScreen.java b/src/main/java/org/grandviewtech/userinterface/screen/ColumnConfigurationScreen.java
index 9324d12..3a79434 100644
--- a/src/main/java/org/grandviewtech/userinterface/screen/ColumnConfigurationScreen.java
+++ b/src/main/java/org/grandviewtech/userinterface/screen/ColumnConfigurationScreen.java
@@ -1,5 +1,6 @@
package org.grandviewtech.userinterface.screen;
+import java.awt.Color;
import java.awt.Component;
/*
@@ -30,6 +31,7 @@
import java.io.FileInputStream;
import java.text.NumberFormat;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.LinkedHashMap;
@@ -60,11 +62,11 @@
import org.apache.commons.io.FilenameUtils;
import org.grandviewtech.constants.CustomDimension;
import org.grandviewtech.entity.bo.Routine;
+import org.grandviewtech.entity.bo.RoutineInput;
import org.grandviewtech.entity.bo.Screen;
import org.grandviewtech.entity.enums.CoilType;
-import org.grandviewtech.entity.enums.Edge;
import org.grandviewtech.entity.enums.InputType;
-import org.grandviewtech.entity.enums.NoNc;
+import org.grandviewtech.entity.enums.Signal;
import org.grandviewtech.entity.helper.Dimension;
import org.grandviewtech.runner.Application;
import org.grandviewtech.service.system.PropertyReader;
@@ -102,7 +104,7 @@ public class ColumnConfigurationScreen extends JFrame
private JRadioButton fallingEdge = new JRadioButton("Falling");
- private ButtonGroup nc_noButtonGroup;
+ private ButtonGroup signalTypeButton;
private JRadioButton NC;
@@ -150,6 +152,8 @@ public ColumnConfigurationScreen()
scrollableConfigurationScreen = new JScrollPane(panel);
scrollableConfigurationScreen.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
scrollableConfigurationScreen.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
+ setBackground(Color.WHITE);
+ panel.setBackground(Color.WHITE);
}
private void reset()
@@ -179,6 +183,11 @@ else if (columnScreen.getTemp().equals(CoilType.OUTPUT))
{
outputCoilConfiguration();
}
+ else if (columnScreen.getTemp().equals(CoilType.EDGE))
+ {
+ addEdgeCoilConfiguration();
+ }
+
}
catch (Exception exception)
{
@@ -211,7 +220,7 @@ private void routineList()
dataList.add(routineName);
}
}
-
+
dataList.sort(new Comparator()
{
@Override
@@ -266,7 +275,16 @@ public void valueChanged(ListSelectionEvent event)
{
for (Entry data : dataset.entrySet())
{
- selectedRoutine.addValue(new Integer(data.getKey()), data.getValue().getText());
+ String sourceName = data.getKey();
+ JTextField source = data.getValue();
+ for (RoutineInput routineInput : selectedRoutine.getRoutineInputs())
+ {
+ if (routineInput.getName().equals(sourceName))
+ {
+ routineInput.setValue(source.getText());
+ }
+ }
+ //selectedRoutine.addValue(new Integer(data.getKey()), data.getValue().getText());
}
columnScreen.setRoutine(selectedRoutine);
optionPane = new JOptionPane("Routine Selected Successfully", JOptionPane.INFORMATION_MESSAGE);
@@ -278,10 +296,11 @@ public void valueChanged(ListSelectionEvent event)
{
dialog.setVisible(false);
dialog.dispose();
- columnScreen.apply();
+ //columnScreen.apply();
});
timer.start();
dispose();
+ columnScreen.apply();
}
else
{
@@ -339,30 +358,32 @@ private void selectRoutine(String selectedRoutineName)
int height = (Y - 5) + 70;
int counter = 1;
Routine current = columnScreen.getRoutine();
- for (Map.Entry input : routine.getInputs().entrySet())
+ List routineInputs = (current == null) ? routine.getRoutineInputs() : current.getRoutineInputs();
+ Collections.sort(routineInputs, Comparator.comparing(RoutineInput::getSequence));
+ for (RoutineInput input : routineInputs)
{
-
String value = input.getValue();
- JLabel label = new JLabel("Input(" + input.getKey() + ") :");
+ String fieldName = input.getName();
+ JLabel label = new JLabel(fieldName + " :");
label.setName(value);
JTextField inputTextField = new JTextField();
- inputTextField.setName("" + input.getKey());
- if (current != null)
+ inputTextField.setName("" + fieldName);
+ inputTextField.setText(input.getValue());
+ inputFields.put(inputTextField.getName(), inputTextField);
+ label.setBounds(((counter % 2 != 0) ? X1 : X2 + 100) + 170, ((counter % 2 != 0) ? height = height + 25 : height), 150, 25);
+ inputTextField.setBounds(((counter % 2 != 0) ? X1 : X2 + 100) + 250, height, 100, 25);
+ inputTextField.addActionListener(action ->
{
- if (current.getValues() != null)
+ JTextField source = (JTextField) action.getSource();
+ String sourceName = source.getName();
+ for (RoutineInput routineInput : routine.getRoutineInputs())
{
- String val = current.getValues().get(input.getKey());
- if (val == null)
+ if (routineInput.getName().equals(sourceName))
{
- val = "";
+ routineInput.setValue(source.getText());
}
- inputTextField.setText(val);
}
- }
- inputFields.put(inputTextField.getName(), inputTextField);
- label.setBounds(((counter % 2 != 0) ? X1 : X2 + 100) + 170, ((counter % 2 != 0) ? height = height + 25 : height), 150, 25);
- inputTextField.setBounds(((counter % 2 != 0) ? X1 : X2 + 100) + 250, height, 100, 25);
- inputTextField.addActionListener(action -> routine.addValue(new Integer(inputTextField.getName()), inputTextField.getText()));
+ });
panel.add(label);
routineComponent.add(label);
panel.add(inputTextField);
@@ -380,6 +401,34 @@ private void selectRoutine(String selectedRoutineName)
}
+ private void addEdgeCoilConfiguration()
+ {
+ addEdgeOptionToScreen();
+ addTagToScreen(2);
+ addSubmitToScreen(3);
+ addCancelToScreen(3);
+ if (columnScreen.getSignal() != null)
+ {
+ switch (columnScreen.getSignal())
+ {
+
+ case FALLING:
+ {
+ fallingEdge.setSelected(true);
+ break;
+ }
+ case RISING:
+ {
+ risingEdge.setSelected(true);
+ break;
+
+ }
+ }
+
+ }
+ invokeFrame(CustomDimension.EDGE_CONFIGURATION_SCREEN);
+ }
+
private void outputCoilConfiguration()
{
addInputValueToScreen();
@@ -395,7 +444,7 @@ private void loadCoilConfiguration()
{
addInputValueToScreen();
addInputOptionsToScreen();
- addEdgeOptionToScreen();
+ //addEdgeOptionToScreen();
addNcNoOptionToScreen();
addTagToScreen(6);
addSubmitToScreen(7);
@@ -521,9 +570,9 @@ public void addMnemonicToEdgeRadioButton()
public void addEdgeOptionToScreen()
{
addRadioButtonsToEdgeButtonGroup();
- edgeLabel.setBounds(X1, Y * 4, RADIO_WIDTH, HEIGHT);
- risingEdge.setBounds(X2, Y * 4, RADIO_WIDTH, HEIGHT);
- fallingEdge.setBounds(X2 + (RADIO_WIDTH * 1), Y * 4, RADIO_WIDTH, HEIGHT);
+ edgeLabel.setBounds(X1, Y * 1, RADIO_WIDTH, HEIGHT);
+ risingEdge.setBounds(X2, Y * 1, RADIO_WIDTH, HEIGHT);
+ fallingEdge.setBounds(X2 + (RADIO_WIDTH * 1), Y * 1, RADIO_WIDTH, HEIGHT);
// separator.setBounds(X1, Y * 4 + (20),
// CustomDimension.CONFIGURATION_SCREEN.width - (X1 * 4), 10);
setDefaultEdgeOption();
@@ -536,25 +585,33 @@ public void addEdgeOptionToScreen()
// NC
public void addRadioButtonsToNoNcButtonGroup()
{
- nc_noButtonGroup = new ButtonGroup();
+ signalTypeButton = new ButtonGroup();
CoilType coilType = columnScreen.getTemp();
if (isLoadCoil())
{
NC = new JRadioButton("NC");
NO = new JRadioButton("NO");
- nc_noButtonGroup.add(NC);
- nc_noButtonGroup.add(NO);
+ risingEdge = new JRadioButton("RISING");
+ fallingEdge = new JRadioButton("FALLING");
+ signalTypeButton.add(risingEdge);
+ signalTypeButton.add(fallingEdge);
+ signalTypeButton.add(NC);
+ signalTypeButton.add(NO);
}
else if (coilType.equals(CoilType.OUTPUT))
{
NC = new JRadioButton("NC");
NO = new JRadioButton("NO");
+ risingEdge = new JRadioButton("RISING");
+ fallingEdge = new JRadioButton("FALLING");
SET = new JRadioButton("SET");
RESET = new JRadioButton("RESET");
- nc_noButtonGroup.add(NC);
- nc_noButtonGroup.add(NO);
- nc_noButtonGroup.add(SET);
- nc_noButtonGroup.add(RESET);
+ signalTypeButton.add(risingEdge);
+ signalTypeButton.add(fallingEdge);
+ signalTypeButton.add(NC);
+ signalTypeButton.add(NO);
+ signalTypeButton.add(SET);
+ signalTypeButton.add(RESET);
}
addMnemonicToNoNcRadioButton();
}
@@ -598,11 +655,29 @@ else if (columnScreen.getTemp().equals(CoilType.OUTPUT))
panel.add(SET);
panel.add(RESET);
}
+ if (columnScreen.getSignal() != null)
+ {
+ switch (columnScreen.getSignal())
+ {
+
+ case NC:
+ {
+ NC.setSelected(true);
+ break;
+ }
+ case NO:
+ {
+ NO.setSelected(true);
+ break;
+
+ }
+ }
+
+ }
panel.add(ncnoLabel);
panel.add(NC);
panel.add(NO);
setDefaultNoNcOption(columnScreen);
-
}
public void addTagToScreen(int x)
@@ -629,7 +704,7 @@ private void addSubmitToScreen(int x)
{
submit.setBounds(X1, Y * x + 20, WIDTH, HEIGHT);
}
- else if (columnScreen.getTemp().equals(CoilType.OUTPUT) || columnScreen.getTemp().equals(CoilType.ROUTINE))
+ else if (columnScreen.getTemp().equals(CoilType.OUTPUT) || columnScreen.getTemp().equals(CoilType.ROUTINE) || columnScreen.getTemp().equals(CoilType.EDGE))
{
submit.setBounds(X1, Y * x + 20, WIDTH, HEIGHT);
}
@@ -641,10 +716,8 @@ else if (columnScreen.getTemp().equals(CoilType.ROUTINE))
panel.add(submit);
submit.addActionListener((ActionEvent event) ->
{
-
if (input.isSelected() || flag.isSelected() || output.isSelected() || word.isSelected())
{
-
InputType inputType = findInputType();
Integer dt = (Integer) value.getValue();
String min = "min" + inputType.getInputType();
@@ -662,24 +735,53 @@ else if (columnScreen.getTemp().equals(CoilType.ROUTINE))
if (coilType.equals(CoilType.ROUTINE))
{
isRoutine = true;
+ dispose();
+ columnScreen.apply(false);
}
else if (isLoadCoil() || coilType.equals(CoilType.OUTPUT))
{
- setNoNcValue(columnScreen);
- setEdgeValue(columnScreen);
+ // TODO
+ if (NC.isSelected())
+ {
+ columnScreen.setSignal(Signal.NC);
+ }
+ if (NO.isSelected())
+ {
+ columnScreen.setSignal(Signal.NO);
+ }
+ dispose();
+ columnScreen.apply();
}
if (!isRoutine)
{
setInputTagAndValue(columnScreen);
+ dispose();
+ columnScreen.apply();
}
- dispose();
- columnScreen.repaint();
- columnScreen.apply();
+
}
}
else
{//
- JOptionPane.showMessageDialog(submit, "Please Select Coil Type");
+ CoilType coilType = columnScreen.getTemp();
+ if (coilType.equals(CoilType.EDGE))
+ {
+
+ if (risingEdge.isSelected())
+ {
+ columnScreen.setSignal(Signal.RISING);
+ }
+ else
+ {
+ columnScreen.setSignal(Signal.FALLING);
+ }
+ dispose();
+ columnScreen.apply();
+ }
+ else
+ {
+ JOptionPane.showMessageDialog(submit, "Please Select Coil Type");
+ }
}
});
}
@@ -698,6 +800,10 @@ else if (columnScreen.getTemp().equals(CoilType.ROUTINE))
{
cancel.setBounds(X2, Y * x + 20, WIDTH, HEIGHT);
}
+ else if (columnScreen.getTemp().equals(CoilType.EDGE))
+ {
+ cancel.setBounds(X2, Y * x + 20, WIDTH, HEIGHT);
+ }
panel.add(cancel);
cancel.addActionListener(event -> dispose());
}
@@ -768,41 +874,27 @@ else if (output.isSelected())
return null;
}
- private void setNoNcValue(ColumnScreen columnScreen)
+ private void setCoilSignalType(ColumnScreen columnScreen)
{
- NoNc nonc = null;
+ Signal signal = null;
if (NO.isSelected())
{
- nonc = NoNc.NO;
+ signal = Signal.NO;
}
else if (NC.isSelected())
{
- nonc = NoNc.NC;
+ signal = Signal.NC;
}
if (SET != null && SET.isSelected())
{
- nonc = NoNc.SET;
+ // signal = Signal.SET;
}
else if (RESET != null && RESET.isSelected())
{
- nonc = NoNc.RESET;
- }
- columnScreen.setNonc(nonc);
- }
-
- private void setEdgeValue(ColumnScreen columnScreen)
- {
- Edge edge = null;
- if (risingEdge.isSelected())
- {
- edge = Edge.RISING;
+ // signal = Signal.RESET;
}
- else if (fallingEdge.isSelected())
- {
- edge = Edge.FALLING;
- }
- columnScreen.setEdge(edge);
+ columnScreen.setSignal(signal);
}
private void setDefaultInputOption()
@@ -853,7 +945,8 @@ private void setDefaultInputOption()
private void setDefaultNoNcOption(ColumnScreen columnScreen)
{
- NoNc nonc = columnScreen.getNonc();
+ /*
+ NoNc nonc = columnScreen.getSignal();
if (nonc != null)
{
switch (nonc)
@@ -870,34 +963,34 @@ private void setDefaultNoNcOption(ColumnScreen columnScreen)
NC.setSelected(false);
break;
}
- /*
+
* default: { NO.setSelected(true); NC.setSelected(false); break; }
- */
+
}
}
- }
-
+ */}
+
private void setDefaultEdgeOption()
{
- Edge edge = columnScreen.getEdge();
- if (edge != null)
- {
- switch (edge)
- {
- case FALLING:
+ /* Edge edge = columnScreen.getEdge();
+ if (edge != null)
{
- risingEdge.setSelected(false);
- fallingEdge.setSelected(true);
- break;
- }
- case RISING:
- {
- risingEdge.setSelected(true);
- fallingEdge.setSelected(false);
- break;
- }
- }
- }
+ switch (edge)
+ {
+ case FALLING:
+ {
+ risingEdge.setSelected(false);
+ fallingEdge.setSelected(true);
+ break;
+ }
+ case RISING:
+ {
+ risingEdge.setSelected(true);
+ fallingEdge.setSelected(false);
+ break;
+ }
+ }
+ }*/
}
private boolean isLoadCoil()
diff --git a/src/main/java/org/grandviewtech/userinterface/screen/ColumnScreen.java b/src/main/java/org/grandviewtech/userinterface/screen/ColumnScreen.java
index 8ab0b2e..c767fce 100644
--- a/src/main/java/org/grandviewtech/userinterface/screen/ColumnScreen.java
+++ b/src/main/java/org/grandviewtech/userinterface/screen/ColumnScreen.java
@@ -20,6 +20,7 @@
import javax.swing.TransferHandler;
import javax.swing.border.Border;
+import org.apache.log4j.Logger;
import org.grandviewtech.constants.CustomBorderList;
import org.grandviewtech.constants.CustomDimension;
import org.grandviewtech.constants.CustomIcon;
@@ -42,6 +43,7 @@
public class ColumnScreen extends JPanel implements DropTargetListener, Comparable
{
+ private static final Logger LOGGER = Logger.getLogger(ColumnScreen.class);
private static final long serialVersionUID = -4357735797077739462L;
private ColumnScreen previous;
private ColumnScreen next;
@@ -60,13 +62,14 @@ public class ColumnScreen extends JPanel implements DropTargetListener, Comparab
private CoilType childType;
private String comment;
private InputType inputType;
- /*private NoNc nonc;
- private Edge edge;*/
+ private NoNc nonc;
+ private Edge edge;
private Signal signal;
private boolean parent;
private boolean error;
private Routine routine;
private boolean isBlank;
+ private boolean paintComponent = true;
public Routine getRoutine()
{
@@ -156,6 +159,16 @@ public void setBelow(ColumnScreen below)
this.below = below;
}
+ public boolean isPaintComponent()
+ {
+ return paintComponent;
+ }
+
+ public void setPaintComponent(boolean paintComponent)
+ {
+ this.paintComponent = paintComponent;
+ }
+
public int getRowNumber()
{
return rowNumber;
@@ -261,7 +274,7 @@ public void setBlank(boolean isBlank)
this.isBlank = isBlank;
}
- public void reset()
+ public void reset(boolean paint)
{
if (routine != null && routine.getComponents() != null)
@@ -273,7 +286,7 @@ public void reset()
setRoutine(null);
}
removeAll();
- init();
+ init(paint);
}
public String getTag()
@@ -330,13 +343,10 @@ public int compareTo(ColumnScreen comparableColumnScreen)
@Override
protected void paintComponent(java.awt.Graphics graphics)
{
+ LOGGER.info("SOME ONE CALLED PAINT FOR row : " + getRowNumber() + " | col : " + getColumnNumber());
super.paintComponent(graphics);
this.valueLabel.setText(this.valueLabel.getText());
- if (isBlank)
- {
- // PaintCoilsOnScreen.paintDefault(this, graphics);
- }
- else
+ if (!isBlank && paintComponent)
{
PaintCoilsOnScreen.paintDragOption(this, graphics);
}
@@ -434,10 +444,10 @@ public ColumnScreen(int row, int column)
{
this.rowNumber = row;
this.columnNumber = column;
- init();
+ init(true);
}
- private void init()
+ private void init(boolean paint)
{
setting = new JLabel(CustomIcon.SETTING);
valueLabel = new JLabel("");
@@ -469,8 +479,11 @@ private void init()
addKeyListener(columnScreenListener);
addFocusListener(columnScreenListener);
setToolTipText("Row : " + this.getRowNumber() + " | Column : " + this.getColumnNumber());
- repaint();
- revalidate();
+ if (paint)
+ {
+ repaint();
+ revalidate();
+ }
}
private void selectTheRigthCoilUsingDragOption(CoilType coilType)
@@ -508,6 +521,11 @@ private void selectTheRigthCoilUsingDragOption(CoilType coilType)
initColumnConfigurationScreen();
break;
}
+ case EDGE:
+ {
+ initColumnConfigurationScreen();
+ break;
+ }
case JUMP:
{
apply();
@@ -522,11 +540,12 @@ private void selectTheRigthCoilUsingDragOption(CoilType coilType)
}
case ROUTINE:
{
- ColumnConfigurationScreen columnConfigurationScreen = new ColumnConfigurationScreen();
+ /*ColumnConfigurationScreen columnConfigurationScreen = new ColumnConfigurationScreen();
columnConfigurationScreen.initiateInstance(this);
columnConfigurationScreen.requestFocusInWindow();
ClipBoard.setCurrentRowNumber(rowNumber);
- ClipBoard.setCurrentColumnNumber(columnNumber);
+ ClipBoard.setCurrentColumnNumber(columnNumber);*/
+ initColumnConfigurationScreen();
break;
}
case DEFAULT:
@@ -598,6 +617,26 @@ private void initColumnConfigurationScreen()
// apply();
}
+ public NoNc getNonc()
+ {
+ return nonc;
+ }
+
+ public void setNonc(NoNc nonc)
+ {
+ this.nonc = nonc;
+ }
+
+ public Edge getEdge()
+ {
+ return edge;
+ }
+
+ public void setEdge(Edge edge)
+ {
+ this.edge = edge;
+ }
+
public boolean isError()
{
return error;
@@ -645,6 +684,8 @@ public boolean equals(Object object)
public void update(ColumnScreen screen)
{
+ setNonc(screen.getNonc());
+ setInputType(screen.getInputType());
setCoilType(screen.getTemp());
setCoilType(screen.getCoilType());
setValue(screen.getValue());
diff --git a/src/main/java/org/grandviewtech/userinterface/screen/CustomHeader.java b/src/main/java/org/grandviewtech/userinterface/screen/CustomHeader.java
index 72576f0..69cac41 100644
--- a/src/main/java/org/grandviewtech/userinterface/screen/CustomHeader.java
+++ b/src/main/java/org/grandviewtech/userinterface/screen/CustomHeader.java
@@ -30,8 +30,9 @@
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
-import java.io.IOException;
+import java.io.FileWriter;
import java.io.OutputStreamWriter;
+import java.util.StringJoiner;
import javax.swing.Box;
import javax.swing.JButton;
@@ -50,7 +51,9 @@
import javax.swing.TransferHandler;
import org.apache.log4j.Logger;
+import org.grandviewtech.constants.ApplicationConstant;
import org.grandviewtech.entity.bo.Routine;
+import org.grandviewtech.entity.bo.Screen;
import org.grandviewtech.service.execution.CompileService;
import org.grandviewtech.service.system.PropertyReader;
import org.grandviewtech.userinterface.misc.CustomToolBar;
@@ -61,7 +64,9 @@
public class CustomHeader
{
- final private static Logger LOGGER = Logger.getLogger(CustomHeader.class);
+ final private static Logger LOGGER = Logger.getLogger(CustomHeader.class);
+
+ private static Screen screen = Screen.getInstance();
public static JMenuBar getJMenuBar()
{
@@ -167,7 +172,6 @@ public static JMenu getRoutineMenu()
JMenuItem exportRoutine = new JMenuItem("Export");
exportRoutine.setToolTipText("Export");
tool.add(exportRoutine);
-
return tool;
}
@@ -177,7 +181,15 @@ public static JMenu getFileMenu()
JMenuItem _new = new JMenuItem("New");
JMenuItem _newTab = new JMenuItem("New Tab");
JMenuItem save = new JMenuItem("Save");
+ save.addActionListener(action ->
+ {
+ save();
+ });
JMenuItem saveAs = new JMenuItem("Save As");
+ saveAs.addActionListener(acton ->
+ {
+ save();
+ });
JMenuItem open = new JMenuItem("Open");
JMenuItem close = new JMenuItem("Close");
JMenuItem exit = new JMenuItem("Exit");
@@ -227,4 +239,49 @@ public void mousePressed(MouseEvent event)
}
}
+ private static void save()
+ {
+ try
+ {
+ File file = new File("Test.txt");
+ if (!file.exists())
+ {
+ file.createNewFile();
+ }
+ FileWriter fileWriter = new FileWriter(file);
+ fileWriter.write(generateFile());
+ fileWriter.flush();
+ fileWriter.close();
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace();
+ }
+ }
+
+ private static String generateFile()
+ {
+ StringJoiner stringJoiner = new StringJoiner("\n");
+ for (RowScreen row : screen.getRows())
+ {
+ int counter = 0;
+ StringJoiner joiner = new StringJoiner(",");
+ String start = "R:" + row.getRowNumber();
+ joiner.add(start);
+ for (ColumnScreen screen : row.getAllColumnScreens())
+ {
+ if (!screen.isBlank())
+ {
+ String column = "C=" + screen.getColumnNumber() + ",I=" + screen.getCoilType();
+ joiner.add(column);
+ }
+ counter = counter + 1;
+ }
+ if (counter == ApplicationConstant.MAX_CELL)
+ {
+ stringJoiner.add(joiner.toString());
+ }
+ }
+ return stringJoiner.toString();
+ }
}
diff --git a/src/main/java/org/grandviewtech/userinterface/screen/RoutineScreen.java b/src/main/java/org/grandviewtech/userinterface/screen/RoutineScreen.java
index c49090c..e4e1c02 100644
--- a/src/main/java/org/grandviewtech/userinterface/screen/RoutineScreen.java
+++ b/src/main/java/org/grandviewtech/userinterface/screen/RoutineScreen.java
@@ -1,6 +1,5 @@
package org.grandviewtech.userinterface.screen;
-import java.awt.Component;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.io.File;
@@ -9,10 +8,11 @@
import java.io.FileOutputStream;
import java.util.ArrayList;
import java.util.Comparator;
+import java.util.HashSet;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
-import java.util.Map.Entry;
+import java.util.Set;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@@ -26,7 +26,6 @@
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
-import javax.swing.JTextField;
import javax.swing.ListSelectionModel;
import javax.swing.Timer;
import javax.swing.event.DocumentEvent;
@@ -39,6 +38,7 @@
import org.apache.log4j.Logger;
import org.grandviewtech.constants.CustomDimension;
import org.grandviewtech.entity.bo.Routine;
+import org.grandviewtech.entity.bo.RoutineInput;
import org.grandviewtech.entity.helper.Dimension;
import org.grandviewtech.runner.Application;
import org.grandviewtech.service.system.PropertyReader;
@@ -53,6 +53,7 @@ public class RoutineScreen extends JFrame
private static final int Y = 30;
final private static Logger LOGGER = Logger.getLogger(RoutineScreen.class);
+
private static final long serialVersionUID = -7808536714907991917L;
private static int maxLength = 10000;
@@ -231,7 +232,9 @@ private void addSubmitToScreen(int x, int y)
JFrame frame = this;
submit.addActionListener(event ->
{
- Routine updated = (new Routine(("" + nameTextField.getText()).trim(), descriptionTextArea.getText(), functionTextArea.getText(), inputs, result));
+ List routineInputs = findInputParam();
+ findLabel(routineInputs);
+ Routine updated = (new Routine(("" + nameTextField.getText()).trim(), descriptionTextArea.getText(), functionTextArea.getText(), routineInputs, result));
String message1 = "";
String message2 = "";
if (selectedRoutine != null)
@@ -305,7 +308,7 @@ private void count(JLabel countLabel, int maxLength, int textLength, boolean rem
private void saveRoutine(Routine routine)
{
- findInputParam();
+ //findInputParam();
XStream stream = new XStream();
FileOutputStream fileOutputStream;
try
@@ -404,27 +407,82 @@ private void selectRoutine(String selectedRoutineName)
}
- private void findInputParam()
+ private List findInputParam()
{
+ List routineInputs = new ArrayList<>();
Pattern pattern = Pattern.compile("\\$\\{([^}]*)\\}");
Matcher matcher = pattern.matcher(functionTextArea.getText());
int from = 0;
int count = 0;
+ Set variables = new HashSet<>();
while (matcher.find(from))
{
+
+ RoutineInput routineInput = new RoutineInput();
from = matcher.start() + 1;
String find = matcher.group(0);
+ LOGGER.info(find);
+ routineInput.setLabel(find);
if (find.contains("INPUT"))
{
- if (!inputs.values().contains(find))
- {
- count++;
- inputs.put(new Integer(count), "${INPUT" + count + "}");
- }
+ routineInput.setType("INPUT");
+ }
+ else if (find.contains("OUTPUT"))
+ {
+ routineInput.setType("OUTPUT");
+ }
+ else if (find.contains("WORD"))
+ {
+ routineInput.setType("WORD");
+ }
+ else if (find.contains("FLAG"))
+ {
+ routineInput.setType("FLAG");
}
else if (find.contains("RESULT"))
{
- result = "${RESULT}";
+ routineInput.setType("RESULT");
+ }
+ if (!variables.contains(routineInput.getLabel()))
+ {
+ count = count + 1;
+ routineInput.setSequence(count);
+ variables.add(routineInput.getLabel());
+ routineInputs.add(routineInput);
+ }
+ }
+ return routineInputs;
+ }
+
+ private void findLabel(List routineInputs)
+ {
+ if (routineInputs.size() > 0)
+ {
+ String lines[] = functionTextArea.getText().split("\\r?\\n");
+ Set variables = new HashSet<>();
+ for (String line : lines)
+ {
+ for (RoutineInput routineInput : routineInputs)
+ {
+ String label = routineInput.getLabel();
+ if (!variables.contains(label))
+ {
+ if (line.contains(label))
+ {
+ String[] split = line.split(";");
+ if (split.length > 0)
+ {
+ routineInput.setName(split[split.length - 1]);
+ }
+ else
+ {
+ routineInput.setName("");
+ }
+ variables.add(label);
+ }
+ }
+
+ }
}
}
}