Java tutorial
/******************************************************************************* * Copyright (c) 2008, 2009 Internettechnik, FH JOANNEUM * http://www.fh-joanneum.at/itm * * Licenced under the GNU GENERAL PUBLIC LICENSE Version 2; * You may obtain a copy of the License at * http://www.gnu.org/licenses/gpl-2.0.txt * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. *******************************************************************************/ package at.rc.tacos.client.providers; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import org.eclipse.jface.viewers.ILabelProviderListener; import org.eclipse.jface.viewers.ITableColorProvider; import org.eclipse.jface.viewers.ITableFontProvider; import org.eclipse.jface.viewers.ITableLabelProvider; import org.eclipse.swt.graphics.Color; import org.eclipse.swt.graphics.Font; import org.eclipse.swt.graphics.Image; import at.rc.tacos.client.modelManager.LockManager; import at.rc.tacos.client.modelManager.ModelFactory; import at.rc.tacos.client.modelManager.SessionManager; import at.rc.tacos.client.modelManager.VehicleManager; import at.rc.tacos.client.util.CustomColors; import at.rc.tacos.factory.ImageFactory; import at.rc.tacos.model.RosterEntry; import at.rc.tacos.model.VehicleDetail; public class PersonalViewLabelProvider implements ITableLabelProvider, ITableColorProvider, ITableFontProvider { // define the columns public static final int COLUMN_LOCK = 0; public static final int COLUMN_STANDBY = 1; public static final int COLUMN_NOTES = 2; public static final int COLUMN_NAME = 3; public static final int COLUMN_PLANED_WORK_TIME = 4; public static final int COLUMN_CHECK_IN = 5; public static final int COLUMN_CHECK_OUT = 6; public static final int COLUMN_SERVICE_TYPE = 7; public static final int COLUMN_JOB = 8; public static final int COLUMN_VEHICLE = 9; // the vehicle manager private VehicleManager vehicleManager = ModelFactory.getInstance().getVehicleManager(); private LockManager lockManager = ModelFactory.getInstance().getLockManager(); @Override public Image getColumnImage(Object element, int columnIndex) { RosterEntry entry = (RosterEntry) element; // determine the colum and return a image if needed switch (columnIndex) { // show lock if the entry is locked case COLUMN_LOCK: if (lockManager.containsLock(RosterEntry.ID, entry.getRosterId())) return ImageFactory.getInstance().getRegisteredImage("resource.lock18"); else return ImageFactory.getInstance().getRegisteredImage("resource.nothing18"); // show house symbol if the person is at home case COLUMN_STANDBY: if (entry.getStandby()) return ImageFactory.getInstance().getRegisteredImage("resource.yes"); else return null; // show info symbol if there are notes case COLUMN_NOTES: if (entry.hasNotes()) return ImageFactory.getInstance().getRegisteredImage("resource.info"); return null; // show a symbol if the planned time is not handled case COLUMN_CHECK_IN: // user is not cheked in but he should if (entry.getRealStartOfWork() != 0) return null; if (entry.getPlannedStartOfWork() < new Date().getTime()) return ImageFactory.getInstance().getRegisteredImage("resource.warning"); else return null; case COLUMN_CHECK_OUT: // user is not checked out but he should if (entry.getRealEndOfWork() != 0) return null; if (entry.getPlannedEndOfWork() < new Date().getTime()) return ImageFactory.getInstance().getRegisteredImage("resource.warning"); return null; default: return null; } } @Override public String getColumnText(Object element, int columnIndex) { RosterEntry entry = (RosterEntry) element; SimpleDateFormat sdf = new SimpleDateFormat("HH:mm"); long displayedDate = SessionManager.getInstance().getDisplayedDate(); long thisDay; long nextDay; String plannedStart; String plannedEnd; switch (columnIndex) { case COLUMN_LOCK: return null; case COLUMN_STANDBY: return null; case COLUMN_NOTES: return null; case COLUMN_NAME: return entry.getStaffMember().getLastName() + " " + entry.getStaffMember().getFirstName(); case COLUMN_PLANED_WORK_TIME: Calendar cal = Calendar.getInstance(); cal.setTimeInMillis(displayedDate); cal.set(Calendar.HOUR_OF_DAY, 0); cal.set(Calendar.MINUTE, 0); thisDay = cal.getTimeInMillis(); cal.set(Calendar.HOUR_OF_DAY, 24); cal.set(Calendar.MINUTE, 60); nextDay = cal.getTimeInMillis(); if (entry.getPlannedStartOfWork() < thisDay) plannedStart = "00:00"; else plannedStart = sdf.format(entry.getPlannedStartOfWork()); if (entry.getPlannedEndOfWork() > nextDay) plannedEnd = "00:00"; else plannedEnd = sdf.format(entry.getPlannedEndOfWork()); return plannedStart + " - " + plannedEnd; case COLUMN_CHECK_IN: if (entry.getRealStartOfWork() != 0) return sdf.format(entry.getRealStartOfWork()); else return ""; case COLUMN_CHECK_OUT: if (entry.getRealEndOfWork() != 0) return sdf.format(entry.getRealEndOfWork()); else return ""; case COLUMN_SERVICE_TYPE: return entry.getServicetype().getServiceName(); case COLUMN_JOB: return entry.getJob().getJobName(); case COLUMN_VEHICLE: VehicleDetail detail = vehicleManager.getVehicleOfStaff(entry.getStaffMember().getStaffMemberId()); // assert valid (only the checked in members can be assigned to // a vehicle if (detail != null && entry.getRealStartOfWork() != 0 && entry.getRealEndOfWork() == 0) { return detail.getVehicleName(); } return null; default: return null; } } @Override public void addListener(ILabelProviderListener arg0) { } @Override public void dispose() { } @Override public boolean isLabelProperty(Object arg0, String arg1) { return false; } @Override public void removeListener(ILabelProviderListener arg0) { } @Override public Color getBackground(Object element, int columnIndex) { return null; } @Override public Color getForeground(Object element, int columnIndex) { RosterEntry entry = (RosterEntry) element; if (entry.getRealStartOfWork() != 0 && entry.getRealEndOfWork() == 0 && vehicleManager.getVehicleOfStaff(entry.getStaffMember().getStaffMemberId()) == null) return null;// black if (entry.getRealStartOfWork() == 0 && entry.getRealEndOfWork() == 0) return CustomColors.DARK_GREY_COLOR; if (entry.getRealStartOfWork() != 0 && entry.getRealEndOfWork() != 0) return CustomColors.DARK_GREY_COLOR; if (entry.getRealStartOfWork() != 0 && entry.getRealEndOfWork() == 0 && vehicleManager.getVehicleOfStaff(entry.getStaffMember().getStaffMemberId()) != null) return CustomColors.BACKGROUND_BLUE; return CustomColors.BACKGROUND_RED; } @Override public Font getFont(Object element, int columnIndex) { // TODO Auto-generated method stub return CustomColors.VEHICLE_TABLE; } }