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); + } + } + + } } } }