001: /*
002: The contents of this file are subject to the Common Public Attribution License
003: Version 1.0 (the "License"); you may not use this file except in compliance with
004: the License. You may obtain a copy of the License at
005: http://www.projity.com/license . The License is based on the Mozilla Public
006: License Version 1.1 but Sections 14 and 15 have been added to cover use of
007: software over a computer network and provide for limited attribution for the
008: Original Developer. In addition, Exhibit A has been modified to be consistent
009: with Exhibit B.
010:
011: Software distributed under the License is distributed on an "AS IS" basis,
012: WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for the
013: specific language governing rights and limitations under the License. The
014: Original Code is OpenProj. The Original Developer is the Initial Developer and
015: is Projity, Inc. All portions of the code written by Projity are Copyright (c)
016: 2006, 2007. All Rights Reserved. Contributors Projity, Inc.
017:
018: Alternatively, the contents of this file may be used under the terms of the
019: Projity End-User License Agreeement (the Projity License), in which case the
020: provisions of the Projity License are applicable instead of those above. If you
021: wish to allow use of your version of this file only under the terms of the
022: Projity License and not to allow others to use your version of this file under
023: the CPAL, indicate your decision by deleting the provisions above and replace
024: them with the notice and other provisions required by the Projity License. If
025: you do not delete the provisions above, a recipient may use your version of this
026: file under either the CPAL or the Projity License.
027:
028: [NOTE: The text of this license may differ slightly from the text of the notices
029: in Exhibits A and B of the license at http://www.projity.com/license. You should
030: use the latest text at http://www.projity.com/license for your modifications.
031: You may not remove this license text from the source files.]
032:
033: Attribution Information: Attribution Copyright Notice: Copyright © 2006, 2007
034: Projity, Inc. Attribution Phrase (not exceeding 10 words): Powered by OpenProj,
035: an open source solution from Projity. Attribution URL: http://www.projity.com
036: Graphic Image as provided in the Covered Code as file: openproj_logo.png with
037: alternatives listed on http://www.projity.com/logo
038:
039: Display of Attribution Information is required in Larger Works which are defined
040: in the CPAL as a work which combines Covered Code or portions thereof with code
041: not governed by the terms of the CPAL. However, in addition to the other notice
042: obligations, all copies of the Covered Code in Executable and Source Code form
043: distributed must, as a form of attribution of the original author, include on
044: each user interface screen the "OpenProj" logo visible to all users. The
045: OpenProj logo should be located horizontally aligned with the menu bar and left
046: justified on the top left of the screen adjacent to the File menu. The logo
047: must be at least 100 x 25 pixels. When users click on the "OpenProj" logo it
048: must direct them back to http://www.projity.com.
049: */
050: package com.projity.pm.graphic.spreadsheet.renderer;
051:
052: import javax.swing.JComponent;
053: import javax.swing.JLabel;
054:
055: import com.projity.configuration.Configuration;
056: import com.projity.field.Field;
057: import com.projity.graphic.configuration.HasTaskIndicators;
058: import com.projity.pm.graphic.IconManager;
059: import com.projity.pm.task.NormalTask;
060: import com.projity.pm.task.SubProj;
061: import com.projity.pm.task.Task;
062: import com.projity.strings.Messages;
063:
064: /**
065: *
066: */
067: public class TaskIndicatorsComponent extends IndicatorsComponent {
068: private static final long serialVersionUID = 192992920101L;
069: protected JLabel calendar;
070: protected JLabel constraint;
071: protected JLabel invalidCalendar;
072: protected JLabel notes;
073: protected JLabel completed;
074: protected JLabel empty;
075: protected JLabel missedDeadline;
076: protected JLabel parentAssignment;
077: protected JLabel subproject;
078: protected JLabel invalidProject;
079: protected JLabel delegated;
080: protected JLabel delegatedMe;
081: Field constraintTypeField = Configuration
082: .getFieldFromId("Field.constraintType"); //$NON-NLS-1$
083: Field constraintDateField = Configuration
084: .getFieldFromId("Field.constraintDate"); //$NON-NLS-1$
085: Field deadlineField = Configuration
086: .getFieldFromId("Field.deadline"); //$NON-NLS-1$
087: Field finish = Configuration.getFieldFromId("Field.finish"); //$NON-NLS-1$
088:
089: public boolean acceptValue(Object value) {
090: return acceptTask(value);
091: }
092:
093: public static boolean acceptTask(Object value) {
094: return value instanceof HasTaskIndicators;
095: }
096:
097: public void init() {
098: //empty = new JLabel("");
099: calendar = new JLabel(
100: " ", IconManager.getIcon("indicator.calendar"), JLabel.RIGHT); //$NON-NLS-1$ //$NON-NLS-2$
101: calendar.setOpaque(false);
102: constraint = new JLabel(
103: " ", IconManager.getIcon("indicator.constraint"), JLabel.RIGHT); //$NON-NLS-1$ //$NON-NLS-2$
104: constraint.setOpaque(false);
105: invalidCalendar = new JLabel(
106: " ", IconManager.getIcon("indicator.invalidCalendar"), JLabel.RIGHT); //$NON-NLS-1$ //$NON-NLS-2$
107: invalidCalendar.setOpaque(false);
108: notes = new JLabel(
109: " ", IconManager.getIcon("indicator.note"), JLabel.RIGHT); //$NON-NLS-1$ //$NON-NLS-2$
110: notes.setOpaque(false);
111: parentAssignment = new JLabel(
112: " ", IconManager.getIcon("indicator.parentAssignment"), JLabel.RIGHT); //$NON-NLS-1$ //$NON-NLS-2$
113: parentAssignment.setOpaque(false);
114: completed = new JLabel(
115: " ", IconManager.getIcon("indicator.completed"), JLabel.RIGHT); //$NON-NLS-1$ //$NON-NLS-2$
116: completed.setOpaque(false);
117: missedDeadline = new JLabel(
118: " ", IconManager.getIcon("indicator.missedDeadline"), JLabel.RIGHT); //$NON-NLS-1$ //$NON-NLS-2$
119: missedDeadline.setOpaque(false);
120: subproject = new JLabel(
121: " ", IconManager.getIcon("indicator.subproject"), JLabel.RIGHT); //$NON-NLS-1$ //$NON-NLS-2$
122: subproject.setOpaque(false);
123: invalidProject = new JLabel(
124: " ", IconManager.getIcon("indicator.invalidProject"), JLabel.RIGHT); //$NON-NLS-1$ //$NON-NLS-2$
125: invalidProject.setOpaque(false);
126: delegated = new JLabel(
127: " ", IconManager.getIcon("indicator.delegated"), JLabel.RIGHT); //$NON-NLS-1$ //$NON-NLS-2$
128: delegated.setOpaque(false);
129: delegatedMe = new JLabel(
130: " ", IconManager.getIcon("indicator.delegatedMe"), JLabel.RIGHT); //$NON-NLS-1$ //$NON-NLS-2$
131: delegatedMe.setOpaque(false);
132: }
133:
134: public void setIndicators(Object value, JComponent label,
135: StringBuffer text, boolean isSelected, boolean hasFocus) {
136: HasTaskIndicators indicators = (HasTaskIndicators) value;
137:
138: if (indicators.getWorkCalendar() != null) {
139: setLook(calendar, isSelected, hasFocus);
140: label.add(calendar);
141: text
142: .append(Messages
143: .getString("TaskIndicatorsComponent.TheCalendar") + indicators.getWorkCalendar().getName() + Messages.getString("TaskIndicatorsComponent.isAssignedToTheTask")); //$NON-NLS-1$ //$NON-NLS-2$
144: }
145: long constraintDate = indicators.getConstraintDate();
146: if (constraintDate != 0) {
147: setLook(constraint, isSelected, hasFocus);
148: label.add(constraint);
149: text
150: .append(Messages
151: .getString("TaskIndicatorsComponent.ThisTaskHasA") + constraintTypeField.getText(indicators, null) + Messages.getString("TaskIndicatorsComponent.constraintOn") + constraintDateField.getText(indicators, null) + "<br>"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
152: }
153: if (indicators.isInvalidIntersectionCalendar()) {
154: setLook(invalidCalendar, isSelected, hasFocus);
155: label.add(invalidCalendar);
156: text
157: .append(Messages
158: .getString("TaskIndicatorsComponent.TheIntersection")); //$NON-NLS-1$
159: }
160: String note = indicators.getNotes();
161: if (note != null && note.length() > 0) {
162: setLook(notes, isSelected, hasFocus);
163: label.add(notes);
164: text
165: .append(Messages
166: .getString("TaskIndicatorsComponent.Notes") + note + "'<br>"); //$NON-NLS-1$ //$NON-NLS-2$
167: }
168: if (indicators.isComplete()) {
169: setLook(completed, isSelected, hasFocus);
170: label.add(completed);
171: text
172: .append(Messages
173: .getString("TaskIndicatorsComponent.TheTaskWasCompletedOn") + finish.getText(indicators, null) + "<br>"); //$NON-NLS-1$ //$NON-NLS-2$
174: }
175:
176: if (indicators.isParentWithAssignments()) {
177: setLook(parentAssignment, isSelected, hasFocus);
178: label.add(parentAssignment);
179: text
180: .append(Messages
181: .getString("TaskIndicatorsComponent.ThisParentTaskHasResources") + ((NormalTask) indicators).getResourceNames() + "<br>"); //$NON-NLS-1$ //$NON-NLS-2$
182: }
183:
184: if (indicators instanceof Task) {
185: Task t = (Task) indicators;
186: if (t.isSubproject()) {
187: SubProj s = (SubProj) t;
188: if (s.isValid()) {
189: setLook(subproject, isSelected, hasFocus);
190: label.add(subproject);
191: text
192: .append(Messages
193: .getString("TaskIndicatorsComponent.ThisTasksRepresentsThe") + (s.isSubprojectOpen() ? Messages.getString("TaskIndicatorsComponent.opened") : Messages.getString("TaskIndicatorsComponent.unopened")) + Messages.getString("TaskIndicatorsComponent.subproject") + ((Task) s).getName()); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
194: } else {
195: setLook(invalidProject, isSelected, hasFocus);
196: label.add(invalidProject);
197: text
198: .append(Messages
199: .getString("TaskIndicatorsComponent.ThisSubprojectIsNotValid")); //$NON-NLS-1$
200: }
201: }
202:
203: if (t.isMissedDeadline()) {
204: setLook(missedDeadline, isSelected, hasFocus);
205: label.add(missedDeadline);
206: text
207: .append(Messages
208: .getString("TaskIndicatorsComponent.ThisTaskFinishesOn") + finish.getText(indicators, null) + //$NON-NLS-1$
209: Messages
210: .getString("TaskIndicatorsComponent.whichIsAfterItsDeadline") + deadlineField.getText(indicators, null)); //$NON-NLS-1$
211: }
212: if (t.getDelegatedTo() != null) {
213: if (t.isDelegatedToUser()) {
214: setLook(delegatedMe, isSelected, hasFocus);
215: label.add(delegatedMe);
216: text
217: .append(Messages
218: .getString("TaskIndicatorsComponent.ThisTaskHasBeenDelegatedToYou")); //$NON-NLS-1$
219:
220: } else {
221: setLook(delegated, isSelected, hasFocus);
222: label.add(delegated);
223: text
224: .append(Messages
225: .getString("TaskIndicatorsComponent.ThisTaskHasBeenDelegatedTo") + t.getDelegatedTo().getName()); //$NON-NLS-1$
226: }
227: }
228: }
229: }
230:
231: }
|