/* * Licensed Materials - Property of Perforce Software, Inc. * © Copyright Perforce Software, Inc. 2014, 2021 * © Copyright IBM Corp. 2009, 2014 * © Copyright ILOG 1996, 2009 * All Rights Reserved. * * Note to U.S. Government Users Restricted Rights: * The Software and Documentation were developed at private expense and * are "Commercial Items" as that term is defined at 48 CFR 2.101, * consisting of "Commercial Computer Software" and * "Commercial Computer Software Documentation", as such terms are * used in 48 CFR 12.212 or 48 CFR 227.7202-1 through 227.7202-4, * as applicable. */ package ganttviewer.views; import ganttviewer.util.interactors.MonthPanelInteractor; import ganttviewer.viewer.View; import ganttviewer.viewer.Viewer; import ilog.views.gantt.IlvActivity; import ilog.views.gantt.IlvGanttModel; import ilog.views.gantt.event.SelectionEvent; import ilog.views.gantt.event.SelectionListener; import ilog.views.gantt.swing.calendarview.IlvDefaultActivityCalendarRenderer; import ilog.views.gantt.swing.calendarview.IlvMonthView; import ilog.views.util.styling.IlvStylingException; import java.awt.Color; import javax.swing.JComponent; /** * <code>MonthlyCalendarView</code> is the Calendar view. */ public class MonthlyCalendarView extends View implements SelectionListener { /** * The activity renderer. */ private IlvDefaultActivityCalendarRenderer activityRenderer; /** * Builds a <code>MonthlyCalendarView</code>. * @param viewer The viewer. * @param iD The ID of the view. * @param name The name of the view. */ public MonthlyCalendarView(Viewer viewer, String iD, String name) { super(viewer, iD, name); // set the calendar. setMainComponent(new IlvMonthView()); } /** * Customizes the calendar before it is added. * @param component The calendar to be added. * @return The calendar. */ Override protected JComponent mainComponentAboutToBeAdded(JComponent component) { IlvMonthView calendar = (IlvMonthView) component; // listen to selection changes. calendar.addSelectionListener(this); calendar .setActivityRenderer(activityRenderer = new IlvDefaultActivityCalendarRenderer()); // add move interactor new MonthPanelInteractor().connect(calendar); return component; } /** * Attaches the Gantt data model to the view. * @param model The Gantt data model. */ Override protected void attachModel(Object model) { getMonthView().setGanttModel((IlvGanttModel) model); if (model == null) { return; } // to update the start of the data model if (((IlvGanttModel) model).getRootActivity() != null) { getMonthView().setDate( ((IlvGanttModel) model).getRootActivity().getStartTime()); } } /** * returns the calendar. * @return The calendar. */ public IlvMonthView getMonthView() { return (IlvMonthView) getMainComponent(); } /** * Indicates whether this view is stylable or not. * @return <code>true</code>. */ Override public boolean isStylable() { return true; } /** * Applies the style to this view. * @param color The color. */ Override public void applyStyle(String color) throws IlvStylingException { String[] rgb = color.split(","); int red = Integer.parseInt(rgb[0].trim()); int green = Integer.parseInt(rgb[1].trim()); int blue = Integer.parseInt(rgb[2].trim()); activityRenderer.setFillPaint(new Color(red, green, blue)); } /** * Activity selection implementation. * @param obj The object to (de)select. * @param selected The selection status. */ Override protected void setSelectedImpl(Object obj, boolean selected) { if (obj instanceof IlvActivity) { getMonthView().setSelected((IlvActivity) obj, selected); } } /** * Deselects all. */ Override protected void deSelectAllImpl() { getMonthView().deselectAllActivities(); } /** * Listens for selection changes. * @param event The selection event. */ Override public void selectionChanged(SelectionEvent event) { super.selectionChanged(event.getSource(), event.isObjectSelected()); } }