Alejandro Acuña
2024-07-30 65a64a81d30f00f1fffd5da6866850e1308e1135
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
package art.client.GUI.components.devices.window.colors.rtz32.configuration.components;
 
import art.library.gui.flat.FlatDialog;
import art.library.gui.flat.FlatPanel;
import art.library.gui.flat.FlatTableInput;
import art.library.gui.flat.FlatTextField;
import art.library.gui.flat.FlatWindow;
import art.library.model.devices.colors.controller.RTZ32.configuration.RTZ32_Configuration;
import art.library.model.devices.colors.controller.RTZ32.configuration.RTZ32_Configuration_Program;
import art.servers.Shared;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.SwingConstants;
import javax.swing.SwingUtilities;
 
 
public class Diagram_Distribution_Times extends FlatPanel
{
    private RTZ32_Configuration configuration = null;
    private int programNumber = 0;
    private Diagram_Distribution distribution = null;
    private FlatPanel panel1 = null;
    private FlatTableInput table1 = null;
    private boolean editable = false;
    private MyActionListener myActionListener = new MyActionListener();
            
    public Diagram_Distribution_Times(RTZ32_Configuration configuration, int programNumber, Diagram_Distribution distribution)
    {
       this.configuration = configuration;
       this.programNumber = programNumber;
       this.distribution = distribution;
       initialise();
       reevaluate();
    }
    
    
    public void editable(boolean value)
    {
        this.editable = value;
        if (table1 != null) table1.setEditable(value);
    }
    
    
 
    public void reevaluate()
    {
        this.panel1.removeAll();
 
        try
        {
            RTZ32_Configuration_Program program = configuration.getProgram(programNumber);
            
            table1 = new FlatTableInput(150);
            
            for (int i=0; i<program.variablePhases.length; i++)
            {   
                if (program.variablePhases[i].isEmpty() == false)
                {
                    table1.addNumericTextField(Shared.getMessage("Variable phase") +  " " + (i+1), 1, 255, 22);
                    table1.setValue(Shared.getMessage("Variable phase") +  " " + (i+1), program.variablePhases[i].getDuration());
                    table1.setMeasurementUnits(Shared.getMessage("Variable phase") +  " " + (i+1), "<html><body>&nbsp;&nbsp;" + program.variablePhases[i].startTime + " " + "&rarr;" + " " + program.variablePhases[i].endTime + "</body></html>", 125, SwingConstants.LEFT);
                    FlatTextField flatTextField = (FlatTextField)table1.getComponentValue(Shared.getMessage("Variable phase") +  " " + (i+1));
                    flatTextField.addActionListener(myActionListener);
                }
            }
            
            table1.revalidate();
            table1.setEditable(editable);
            panel1.add(table1.getScrollPane(), BorderLayout.CENTER);
            panel1.revalidate();
            
        }
        catch (Exception exception)
        {
        }
    }
    
    
    
    public void initialise()
    {
        panel1 = new FlatPanel();
        panel1.setLayout(new BorderLayout());
        this.setLayout(new BorderLayout());
        this.add(panel1, BorderLayout.CENTER);
    }
 
    
    
    
    private class MyActionListener implements ActionListener
    {
        public void actionPerformed(ActionEvent e)
        {
            try
            {
                RTZ32_Configuration_Program program = configuration.getProgram(programNumber);
                
                boolean reevaluate = false;
 
                int previousCycle = program.cycle;
                
                for (int i=0; i<program.variablePhases.length; i++)
                {   
                    if (program.variablePhases[i].isEmpty() == false)
                    {
                        int duration = Integer.parseInt((String)table1.getValue(Shared.getMessage("Variable phase") +  " " + (i+1)));
 
                        if ((duration > 0) && (program.variablePhases[i].getDuration() != duration))
                        {
                            int time1 = program.variablePhases[i].endTime;
                            int time2 = program.variablePhases[i].endTime + (duration - program.variablePhases[i].getDuration());
                            program.redistributeTimes(time1, time2);
                            reevaluate = true;
                        }
                    }
                }
 
 
                if (reevaluate == true)
                {
                    distribution.reevaluate();
                    distribution.diagram_Distribution_Bars.repaint();
                    distribution.diagram_Distribution_Impulses.reevaluate();
                    distribution.diagram_Distribution_Times.reevaluate();
                    distribution.changeMade();
                    
                    if (previousCycle != program.cycle)
                    {
                        FlatWindow window = (FlatWindow)SwingUtilities.getRoot(Diagram_Distribution_Times.this);
                        String message = Shared.getMessage("Cycle value has changed from") + " "  + previousCycle + " " + Shared.getMessage("to") + " " + program.cycle;
                        FlatDialog.showDialog(window, Shared.getMessage("Time distribution"), message, true, FlatDialog.DIALOG_WARNING);
                    }
                    else
                    {
                        FlatWindow window = (FlatWindow)SwingUtilities.getRoot(Diagram_Distribution_Times.this);
                        String message = Shared.getMessage("The distribution of movement has been applied correctly");
                        FlatDialog.showDialog(window, Shared.getMessage("Time distribution"), message, true, FlatDialog.DIALOG_INFORMATION);
                    }
                }
            }
            catch (Exception exception)
            {
                exception.printStackTrace();
            }
        }
    }
    
    
    
}