package art.servers.colorsserver.M.gui.diagrams;
|
import art.library.model.devices.colors.controller.M.M_ControllerConfiguration;
|
import art.library.model.devices.colors.controller.M.M_SubcontrollerConfiguration;
|
import art.library.model.devices.colors.controller.M.configuration.M_TimeTable;
|
import art.library.gui.flat.FlatPanel;
|
import art.library.gui.flat.schedule.PanelSchedule;
|
import art.library.gui.flat.schedule.ScheduleTask;
|
import art.servers.Shared;
|
import java.awt.BorderLayout;
|
import java.awt.Color;
|
import java.text.DecimalFormat;
|
import java.util.ArrayList;
|
import java.util.Calendar;
|
|
|
public class DiagramTimetable extends PanelConfigurationGeneric
|
{
|
private M_ControllerConfiguration m_controllerConfiguration = null;
|
private M_SubcontrollerConfiguration m_subcontrollerConfiguration = null;
|
private PanelSchedule panelSchedule = null;
|
|
|
public DiagramTimetable(M_ControllerConfiguration m_controllerConfiguration, M_SubcontrollerConfiguration m_subcontrollerConfiguration)
|
{
|
this.m_controllerConfiguration = m_controllerConfiguration;
|
this.m_subcontrollerConfiguration = m_subcontrollerConfiguration;
|
initialise();
|
reload();
|
}
|
|
|
|
public void editable(boolean value)
|
{
|
super.editable(value);
|
grants();
|
reload();
|
|
}
|
|
|
|
public void reload()
|
{
|
grants();
|
|
ArrayList<ScheduleTask> lTask = new ArrayList<ScheduleTask>();
|
|
if (m_subcontrollerConfiguration.ltimetable != null)
|
{
|
if (m_subcontrollerConfiguration.ltimetable.size() > 0)
|
{
|
ScheduleTask firsTask = new ScheduleTask(m_subcontrollerConfiguration.ltimetable.get(0).timestampStart, m_subcontrollerConfiguration.ltimetable.get(0).timestampEnd);
|
|
if ((firsTask.calendarBegin.get(Calendar.DAY_OF_WEEK) != Calendar.MONDAY) || (firsTask.calendarBegin.get(Calendar.HOUR_OF_DAY) != 0) || (firsTask.calendarBegin.get(Calendar.MINUTE) != 0))
|
{
|
// La primera no es Lunes a las 00:00
|
int last = m_subcontrollerConfiguration.ltimetable.size()-1;
|
|
M_TimeTable lastTimetable = m_subcontrollerConfiguration.ltimetable.get(last);
|
M_TimeTable newfirsttimeTable = new M_TimeTable();
|
newfirsttimeTable.operationMode = lastTimetable.operationMode;
|
newfirsttimeTable.plan = lastTimetable.plan;
|
newfirsttimeTable.redOutput = lastTimetable.redOutput;
|
newfirsttimeTable.yellowOutput = lastTimetable.yellowOutput;
|
newfirsttimeTable.greenOutput = lastTimetable.greenOutput;
|
|
Calendar calendar = Calendar.getInstance();
|
calendar.set(Calendar.YEAR, 2000);
|
calendar.set(Calendar.DATE, 1);
|
calendar.set(Calendar.MONTH, 4);
|
calendar.set(Calendar.HOUR_OF_DAY, 0);
|
calendar.set(Calendar.MINUTE, 0);
|
calendar.set(Calendar.SECOND, 0);
|
calendar.set(Calendar.MILLISECOND, 0);
|
newfirsttimeTable.timestampStart = calendar.getTimeInMillis();
|
|
if (last == 0)
|
{
|
newfirsttimeTable.timestampEnd = lastTimetable.timestampStart;
|
}
|
else
|
{
|
newfirsttimeTable.timestampEnd = m_subcontrollerConfiguration.ltimetable.get(0).timestampStart;
|
}
|
|
m_subcontrollerConfiguration.ltimetable.add(0, newfirsttimeTable);
|
}
|
}
|
|
|
for (M_TimeTable timetable : m_subcontrollerConfiguration.ltimetable)
|
{
|
ScheduleTask task = new ScheduleTask(timetable.timestampStart, timetable.timestampEnd);
|
task.object = timetable;
|
task.name = Shared.getMessage("mnemonic-Plan") + timetable.plan;
|
|
switch (timetable.operationMode)
|
{
|
case M_TimeTable.OPERATION_MODE_FIXED : task.name = task.name + Shared.getMessage("mnemonic-Fixed"); task.color = Color.green; break;
|
case M_TimeTable.OPERATION_MODE_SEMIACTUATED : task.name = task.name + Shared.getMessage("mnemonic-Semiactuated"); task.color = Color.green; break;
|
case M_TimeTable.OPERATION_MODE_ACTUATED : task.name = task.name + Shared.getMessage("mnemonic-Actuated"); task.color = Color.green; break;
|
case M_TimeTable.OPERATION_MODE_FLASHINGYELLOW : task.name = Shared.getMessage("Y^"); task.color = Color.yellow; break;
|
case M_TimeTable.OPERATION_MODE_DIRECTGROUP : task.name = Shared.getMessage("mnemonic-Group"); task.color = Color.orange; break;
|
case M_TimeTable.OPERATION_MODE_NONE : task.name = Shared.getMessage("?"); task.color = Color.gray; break;
|
}
|
|
task.description = task.name;
|
task.setTimestamps(timetable.timestampStart, timetable.timestampEnd);
|
lTask.add(task);
|
}
|
}
|
|
panelSchedule.setScheduleTask(lTask);
|
panelSchedule.revalidate();
|
repaint();
|
}
|
|
|
|
|
|
private void initialise()
|
{
|
FlatPanel panel1 = new FlatPanel();
|
{
|
panelSchedule = new PanelSchedule(PanelSchedule.TYPE_GENERAL_WEEK, 5);
|
panelSchedule.setEditable(false);
|
Calendar calendar1 = Calendar.getInstance();
|
calendar1.setTimeInMillis(0);
|
calendar1.set(Calendar.YEAR, 2000);
|
calendar1.set(Calendar.HOUR_OF_DAY, 0);
|
calendar1.set(Calendar.DATE, 1);
|
calendar1.set(Calendar.MONTH, 4);
|
panelSchedule.setTimestamp(calendar1.getTimeInMillis());
|
panel1.setLayout(new BorderLayout());
|
panel1.add(panelSchedule, BorderLayout.CENTER);
|
}
|
|
this.setLayout(new BorderLayout());
|
this.add(panel1, BorderLayout.CENTER);
|
}
|
|
|
|
|
|
|
|
}
|