/*
* Copyright 2008 Jeff Dwyer
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/
package com.apress.progwt.client.college.gui.timeline;
import com.apress.progwt.client.college.gui.ProcessCheckboxWidget;
import com.apress.progwt.client.college.gui.ProcessPercentWidget;
import com.apress.progwt.client.consts.ConstHolder;
import com.apress.progwt.client.domain.ProcessType;
import com.apress.progwt.client.gui.timeline.TLOWrapper;
import com.apress.progwt.client.gui.timeline.TimeLineObj;
import com.apress.progwt.client.gui.timeline.TimeLineObjFactory;
import com.apress.progwt.client.gui.timeline.TimelineRemembersPosition;
import com.apress.progwt.client.gui.timeline.ZoomableTimeline;
import com.google.gwt.user.client.ui.Image;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.Widget;
public class ProcessTimeLineObjFactory implements TimeLineObjFactory {
/**
* mea culpa. putting all the instanceof stuff in one place. Is there
* a better way to do this when I can't put anything to do with
* ConstHolder.images into the real domain objects without fear of
* them exploding in a non GWT context?
*
*
* @param zoomableTimeline
* @param manager
* @param tlo
* @return
*/
public TimelineRemembersPosition getWidget(
ZoomableTimeline<?> zoomableTimeline,
TimelineController controller, TimeLineObj<?> tlo) {
// if (tlo.getHasDate() instanceof HippoDate) {
// TLORangeWidget tlow = new TLORangeWidget(zoomableTimeline,
// tlo);
// tlow.addMouseWheelListener(zoomableTimeline);
// return tlow;
// } else {
//
Widget mainWidget = null;
Label mainLabel = null;
TLOWrapper tlow = null;
if (tlo.getHasDate() instanceof ProcessTimeLineEntry) {
Image dragImage = ConstHolder.images.bullet_blue()
.createImage();
ProcessTimeLineEntry pte = (ProcessTimeLineEntry) tlo
.getHasDate();
ProcessType processType = pte.getProcessType();
String imageName = processType.getImageName();
if (imageName != null) {
if (imageName.equals("applying")) {
mainWidget = ConstHolder.images.applying()
.createImage();
} else if (imageName.equals("accepted")) {
mainWidget = ConstHolder.images.accepted()
.createImage();
} else if (imageName.equals("rejected")) {
mainWidget = ConstHolder.images.rejected()
.createImage();
} else if (imageName.equals("applied")) {
mainWidget = ConstHolder.images.applied()
.createImage();
} else if (imageName.equals("considering")) {
mainWidget = ConstHolder.images.considering()
.createImage();
}
} else {
if (processType.isPercentage()) {
mainWidget = new ProcessPercentWidget(controller,
processType, pte.getProcessValue());
} else {
mainWidget = new ProcessCheckboxWidget(controller,
processType, pte.getProcessValue());
}
mainLabel = new Label(processType.getName(), false);
}
tlow = new TLOWrapper(zoomableTimeline, tlo, dragImage,
mainWidget, mainLabel);
}
tlow.addMouseWheelListener(zoomableTimeline);
return tlow;
}
}