package art.client.GUI.components.devices.window.colors.rtz32.configuration.components; import art.library.gui.FlatGUI; import art.library.gui.flat.FlatPanel; import art.library.gui.flat.FlatTextField; import art.library.model.devices.colors.controller.RTZ32.configuration.RTZ32_Configuration_Program; import art.library.model.devices.colors.controller.RTZ32.configuration.RTZ32_Configuration_Program_Group; import art.library.model.devices.colors.controller.RTZ32.types.RTZ32_Distribution_Group; import art.library.model.devices.colors.controller.RTZ32.types.RTZ32_Distribution_Group_ImpulseExtended; import java.awt.BorderLayout; import java.awt.Color; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.ComponentAdapter; import java.awt.event.ComponentEvent; import java.awt.event.FocusEvent; import java.awt.event.FocusListener; import java.util.ArrayList; import java.util.List; import javax.swing.SwingConstants; public class Diagram_Distribution_Impulses_Group extends FlatPanel { private RTZ32_Configuration_Program program = null; private RTZ32_Distribution_Group group = null; private List panels = null; private List textfields = null; private MyActionListener actionListener = null; private MyFocusListener focusListener = null; private int maximumImpulses = 0; private Diagram_Distribution_Bars diagram_Distribution_Bars = null; private List impulses = null; private List impulsesExtended = null; private int impulsesListPosition = -1; public Diagram_Distribution_Impulses_Group(RTZ32_Configuration_Program program, RTZ32_Distribution_Group group, int maximumImpulses) { this.program = program; this.group = group; this.maximumImpulses = maximumImpulses; this.impulsesExtended = group.impulsesExtended; this.impulses = group.impulses; initialise(); } public Diagram_Distribution_Impulses_Group(RTZ32_Configuration_Program program, RTZ32_Distribution_Group group, int impulsesListPosition, int maximumImpulses) { this.program = program; this.group = group; this.maximumImpulses = maximumImpulses; this.impulsesExtended = group.listImpulsesExtended.get(impulsesListPosition); this.impulses = group.listImpulses.get(impulsesListPosition); this.impulsesListPosition = impulsesListPosition; initialise(); } public void setDiagram(Diagram_Distribution_Bars diagram_Distribution_Bars) { this.diagram_Distribution_Bars = diagram_Distribution_Bars; } public void editable(boolean value) { for(MyTextFieldList myTextFieldList : textfields) { myTextFieldList.editable(value); } } public void initialise() { this.actionListener = new MyActionListener(); this.focusListener = new MyFocusListener(); this.setLayout(null); this.setRaisedBorder(1,0,1,0); this.panels = new ArrayList(); this.textfields = new ArrayList(); for (int i=0; i 0) { int w = (int)getWidth()/maximumImpulses; int h = getHeight(); for (int i=0; i textfields = new ArrayList(); public int impulseNumber = 0; public MyTextFieldList(int impulseNumber) { this.impulseNumber = impulseNumber; RTZ32_Distribution_Group_ImpulseExtended extended = impulsesExtended.get(this.impulseNumber - 1); if (extended.transition1 == null) { textfields.add(createTextField(extended.time, extended.editable)); } else if ((extended.transition1 != null) && (extended.transition2 == null)) { textfields.add(createTextField(extended.time, extended.editable)); textfields.add(createTextField(extended.time + extended.transition1, false)); } else if ((extended.transition1 != null) && (extended.transition2 != null)) { textfields.add(createTextField(extended.time, true)); textfields.add(createTextField(extended.time + extended.transition1, false)); textfields.add(createTextField(extended.time + extended.transition1 + extended.transition2, false)); } } public void editable(boolean value) { for(FlatTextField textfield : textfields) { if (textfield.isEditable() == true) { textfield.setEnabled(value); } } } public void update() { RTZ32_Distribution_Group_ImpulseExtended extended = impulsesExtended.get(this.impulseNumber - 1); if ((extended.transition1 == null) && (extended.transition2 == null)) { textfields.get(0).setText("" + (extended.time)); } else if ((extended.transition1 != null) && (extended.transition2 == null)) { textfields.get(1).setText("" + (extended.time + extended.transition1)); } else if ((extended.transition1 != null) && (extended.transition2 != null)) { textfields.get(1).setText("" + (extended.time + extended.transition1)); textfields.get(2).setText("" + (extended.time + extended.transition1 + extended.transition2)); } } private FlatTextField createTextField(int time, boolean editable) { RTZ32_Distribution_Group_ImpulseExtended extended = impulsesExtended.get(this.impulseNumber - 1); FlatTextField textfield = new FlatTextField(); textfield.setNumeric(true, 0, program.cycle); textfield.setName("" + extended.number); textfield.setDefaultText("" + time); textfield.setText("" + time); textfield.getLook().border = false; textfield.getLook().colorBackgroundUneditable = FlatGUI.lookDesign.getColor("panel.color.background"); textfield.getLook().colorForegroundUneditable = FlatGUI.lookDesign.getColor("textfield.color.disabled.foreground"); textfield.getLook().horizontalAlignment = SwingConstants.CENTER; textfield.setHorizontalAlignment(SwingConstants.CENTER); textfield.setEditable(editable); if (editable == true) { textfield.addActionListener(actionListener); } textfield.addFocusListener(focusListener); return textfield; } } private class MyActionListener implements ActionListener { public void actionPerformed(ActionEvent e) { FlatTextField flatTextField = (FlatTextField)e.getSource(); int order = Integer.parseInt(flatTextField.getName()); int value = Integer.parseInt(flatTextField.getText()); RTZ32_Configuration_Program_Group programGroup = program.getGroup(group.groupNumber); if (impulsesListPosition < 0) { programGroup.impulses.set(order, value); group.impulses.set(order, value); impulsesExtended.get(order).time = value; } else { // Group Type 20, special case impulsesExtended.get(order).time = value; } group.reevaluate(); if (diagram_Distribution_Bars != null) { diagram_Distribution_Bars.repaint(); diagram_Distribution_Bars.distribution.changeMade(); } for (MyTextFieldList textfield : textfields) { textfield.update(); } } } private class MyFocusListener implements FocusListener { public void focusGained(FocusEvent e) { try { FlatTextField flatTextField = (FlatTextField)e.getSource(); diagram_Distribution_Bars.selected(group, Integer.parseInt(flatTextField.getText())); diagram_Distribution_Bars.repaint(); } catch (Exception exception) { } } public void focusLost(FocusEvent e) { try { diagram_Distribution_Bars.selected(null, 0); diagram_Distribution_Bars.repaint(); } catch (Exception exception) { } } } }