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<FlatPanel> panels = null;
|
private List<MyTextFieldList> textfields = null;
|
private MyActionListener actionListener = null;
|
private MyFocusListener focusListener = null;
|
private int maximumImpulses = 0;
|
private Diagram_Distribution_Bars diagram_Distribution_Bars = null;
|
private List<Integer> impulses = null;
|
private List<RTZ32_Distribution_Group_ImpulseExtended> 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<FlatPanel>();
|
this.textfields = new ArrayList<MyTextFieldList>();
|
|
for (int i=0; i<impulsesExtended.size(); i++)
|
{
|
RTZ32_Distribution_Group_ImpulseExtended extended = impulsesExtended.get(i);
|
|
MyTextFieldList myTextFieldsList = new MyTextFieldList(i + 1);
|
|
textfields.add(myTextFieldsList);
|
|
for(FlatTextField textfield : myTextFieldsList.textfields)
|
{
|
FlatPanel panel = new FlatPanel();
|
{
|
panel.setLayout(new BorderLayout());
|
panel.setBackground(Color.white);
|
panel.setRaisedBorder(0,1,0,1);
|
panel.add(textfield, BorderLayout.CENTER);
|
|
if (extended.background != null)
|
{
|
textfield.getLook().colorBackground = new Color(extended.background);
|
textfield.getLook().colorBackgroundDisabled = textfield.getLook().colorBackground;
|
textfield.getLook().colorBackgroundUneditable = textfield.getLook().colorBackground;
|
textfield.revalidate();
|
}
|
}
|
|
panels.add(panel);
|
this.add(panel);
|
}
|
|
}
|
|
|
|
this.addComponentListener(new ComponentAdapter()
|
{
|
@Override
|
public void componentResized(ComponentEvent e)
|
{
|
if (maximumImpulses > 0)
|
{
|
int w = (int)getWidth()/maximumImpulses;
|
int h = getHeight();
|
|
for (int i=0; i<panels.size(); i++)
|
{
|
if (i == (maximumImpulses-1))
|
{
|
panels.get(i).setBounds(i * w, 1, getWidth() - (i * w), h-2);
|
}
|
else if (panels.size() == 1)
|
{
|
panels.get(i).setBounds(0, 1, getWidth(), h-2);
|
}
|
else
|
{
|
panels.get(i).setBounds(i * w, 1, w, h-2);
|
}
|
}
|
}
|
|
Diagram_Distribution_Impulses_Group.super.revalidate();
|
}
|
});
|
}
|
|
|
|
|
|
private class MyTextFieldList
|
{
|
public List<FlatTextField> textfields = new ArrayList<FlatTextField>();
|
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)
|
{
|
}
|
}
|
}
|
|
|
|
}
|