[Bug #803] Refactor LimitingResourcesPanel
* Modularize code and removed unused code in other related classes FEA: ItEr68S04BugFixing
This commit is contained in:
parent
affada5877
commit
836c3d2da0
6 changed files with 85 additions and 156 deletions
|
|
@ -21,7 +21,6 @@
|
|||
package org.navalplanner.web.limitingresources;
|
||||
|
||||
import org.apache.commons.lang.Validate;
|
||||
import org.navalplanner.business.planner.limiting.entities.LimitingResourceQueueDependency;
|
||||
import org.zkoss.ganttz.data.DependencyType;
|
||||
import org.zkoss.zk.au.out.AuInvoke;
|
||||
import org.zkoss.zul.impl.XulElement;
|
||||
|
|
@ -79,14 +78,6 @@ public class LimitingDependencyComponent extends XulElement {
|
|||
this.destination = findTaskComponent(idTaskEnd);
|
||||
}
|
||||
|
||||
public void zoomChanged() {
|
||||
redrawDependency();
|
||||
}
|
||||
|
||||
public void redrawDependency() {
|
||||
response("zoomChanged", new AuInvoke(this, "draw"));
|
||||
}
|
||||
|
||||
public QueueTask getSource() {
|
||||
return source;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -20,9 +20,7 @@
|
|||
|
||||
package org.navalplanner.web.limitingresources;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import org.apache.commons.logging.Log;
|
||||
|
|
@ -31,23 +29,16 @@ import org.navalplanner.business.planner.limiting.entities.LimitingResourceQueue
|
|||
import org.navalplanner.business.planner.limiting.entities.LimitingResourceQueueElement;
|
||||
import org.navalplanner.business.resources.entities.LimitingResourceQueue;
|
||||
import org.zkoss.ganttz.DependencyList;
|
||||
import org.zkoss.ganttz.timetracker.TimeTracker;
|
||||
import org.zkoss.ganttz.timetracker.TimeTrackerComponent;
|
||||
import org.zkoss.ganttz.timetracker.zoom.IZoomLevelChangedListener;
|
||||
import org.zkoss.ganttz.timetracker.zoom.ZoomLevel;
|
||||
import org.zkoss.zk.ui.ext.AfterCompose;
|
||||
import org.zkoss.zul.impl.XulElement;
|
||||
|
||||
/**
|
||||
* @author Lorenzo Tilve Álvaro <ltilve@igalia.com>
|
||||
* @author Diego Pino García <dpino@igalia.com>
|
||||
*/
|
||||
public class LimitingDependencyList extends XulElement implements AfterCompose {
|
||||
public class LimitingDependencyList extends XulElement {
|
||||
|
||||
private static final Log LOG = LogFactory.getLog(DependencyList.class);
|
||||
|
||||
private transient IZoomLevelChangedListener listener;
|
||||
|
||||
private final LimitingResourcesPanel panel;
|
||||
|
||||
private Map<LimitingResourceQueueDependency, LimitingDependencyComponent> dependencies = new HashMap<LimitingResourceQueueDependency, LimitingDependencyComponent>();
|
||||
|
|
@ -105,7 +96,6 @@ public class LimitingDependencyList extends XulElement implements AfterCompose {
|
|||
|
||||
private void addDependencyComponent(
|
||||
LimitingDependencyComponent dependencyComponent) {
|
||||
dependencyComponent.redrawDependency();
|
||||
dependencyComponent.setParent(this);
|
||||
}
|
||||
|
||||
|
|
@ -134,46 +124,6 @@ public class LimitingDependencyList extends XulElement implements AfterCompose {
|
|||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void afterCompose() {
|
||||
if (listener == null) {
|
||||
listener = new IZoomLevelChangedListener() {
|
||||
@Override
|
||||
public void zoomLevelChanged(ZoomLevel detailLevel) {
|
||||
for (LimitingDependencyComponent dependencyComponent : getLimitingDependencyComponents()) {
|
||||
dependencyComponent.zoomChanged();
|
||||
}
|
||||
}
|
||||
};
|
||||
getTimeTracker().addZoomListener(listener);
|
||||
}
|
||||
redrawDependencies();
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
private List<LimitingDependencyComponent> getLimitingDependencyComponents() {
|
||||
return new ArrayList<LimitingDependencyComponent>(dependencies.values());
|
||||
}
|
||||
|
||||
private TimeTracker getTimeTracker() {
|
||||
return getTimeTrackerComponent().getTimeTracker();
|
||||
}
|
||||
|
||||
private TimeTrackerComponent getTimeTrackerComponent() {
|
||||
return panel.getTimeTrackerComponent();
|
||||
}
|
||||
|
||||
private void redrawDependencies() {
|
||||
redrawDependencyComponents(getLimitingDependencyComponents());
|
||||
}
|
||||
|
||||
private void redrawDependencyComponents(
|
||||
List<LimitingDependencyComponent> dependencyComponents) {
|
||||
for (LimitingDependencyComponent dependencyComponent : dependencyComponents) {
|
||||
dependencyComponent.redrawDependency();
|
||||
}
|
||||
}
|
||||
|
||||
public void clear() {
|
||||
dependencies.clear();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -565,7 +565,6 @@ public class LimitingResourcesController extends GenericForwardComposer {
|
|||
|
||||
public boolean moveTask(LimitingResourceQueueElement element) {
|
||||
showManualAllocationWindow(element);
|
||||
limitingResourcesPanel.reloadComponent();
|
||||
return getManualAllocationWindowStatus() == Messagebox.OK;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -32,9 +32,8 @@ import org.joda.time.Period;
|
|||
import org.joda.time.format.DateTimeFormat;
|
||||
import org.joda.time.format.DateTimeFormatter;
|
||||
import org.navalplanner.business.planner.limiting.entities.LimitingResourceQueueElement;
|
||||
import org.navalplanner.business.resources.daos.IResourceDAO;
|
||||
import org.navalplanner.business.resources.entities.LimitingResourceQueue;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.zkoss.ganttz.DependencyList;
|
||||
import org.zkoss.ganttz.timetracker.TimeTracker;
|
||||
import org.zkoss.ganttz.timetracker.TimeTracker.IDetailItemFilter;
|
||||
import org.zkoss.ganttz.timetracker.TimeTrackerComponent;
|
||||
|
|
@ -69,16 +68,18 @@ public class LimitingResourcesPanel extends HtmlMacroComponent {
|
|||
|
||||
private LimitingResourcesController limitingResourcesController;
|
||||
|
||||
private TimeTracker timeTracker;
|
||||
|
||||
private TimeTrackerComponent timeTrackerComponent;
|
||||
|
||||
private TimeTrackerComponent timeTrackerHeader;
|
||||
|
||||
private LimitingResourcesLeftPane leftPane;
|
||||
|
||||
private QueueListComponent queueListComponent;
|
||||
|
||||
private MutableTreeModel<LimitingResourceQueue> treeModel;
|
||||
|
||||
private TimeTracker timeTracker;
|
||||
|
||||
private Listbox listZoomLevels;
|
||||
|
||||
private Button paginationDownButton;
|
||||
|
|
@ -87,6 +88,11 @@ public class LimitingResourcesPanel extends HtmlMacroComponent {
|
|||
|
||||
private Listbox horizontalPagination;
|
||||
|
||||
private LimitingDependencyList dependencyList = new LimitingDependencyList(
|
||||
this);
|
||||
|
||||
private PaginatorFilter paginatorFilter;
|
||||
|
||||
private Component insertionPointLeftPanel;
|
||||
private Component insertionPointRightPanel;
|
||||
private Component insertionPointTimetracker;
|
||||
|
|
@ -103,18 +109,6 @@ public class LimitingResourcesPanel extends HtmlMacroComponent {
|
|||
goToSelectedHorizontalPage();
|
||||
}
|
||||
|
||||
@Autowired
|
||||
IResourceDAO resourcesDAO;
|
||||
|
||||
private LimitingDependencyList dependencyList = new LimitingDependencyList(
|
||||
this);
|
||||
|
||||
private PaginatorFilter paginatorFilter;
|
||||
|
||||
private TimeTrackerComponent timeTrackerHeader;
|
||||
|
||||
private IZoomLevelChangedListener zoomChangedListener;
|
||||
|
||||
/**
|
||||
* Returns the closest upper {@link LimitingResourcesPanel} instance going
|
||||
* all the way up from comp
|
||||
|
|
@ -148,7 +142,6 @@ public class LimitingResourcesPanel extends HtmlMacroComponent {
|
|||
|
||||
treeModel = createModelForTree();
|
||||
|
||||
timeTrackerComponent = timeTrackerForLimitingResourcesPanel(timeTracker);
|
||||
queueListComponent = new QueueListComponent(this, timeTracker,
|
||||
treeModel);
|
||||
|
||||
|
|
@ -235,50 +228,52 @@ public class LimitingResourcesPanel extends HtmlMacroComponent {
|
|||
return toolbar;
|
||||
}
|
||||
|
||||
private TimeTrackerComponent timeTrackerForLimitingResourcesPanel(
|
||||
TimeTracker timeTracker) {
|
||||
return new TimeTrackerComponent(timeTracker) {
|
||||
@Override
|
||||
protected void scrollHorizontalPercentage(int pixelsDisplacement) {
|
||||
response("", new AuInvoke(queueListComponent,
|
||||
"adjustScrollHorizontalPosition", pixelsDisplacement
|
||||
+ ""));
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@Override
|
||||
public void afterCompose() {
|
||||
|
||||
super.afterCompose();
|
||||
paginatorFilter = new PaginatorFilter();
|
||||
|
||||
initializeBindings();
|
||||
initializeTimetracker();
|
||||
|
||||
listZoomLevels
|
||||
.setSelectedIndex(timeTracker.getDetailLevel().ordinal() - 2);
|
||||
|
||||
// Pagination stuff
|
||||
paginationUpButton.setDisabled(paginatorFilter.isLastPage());
|
||||
|
||||
paginatorFilter.setInterval(timeTracker.getRealInterval());
|
||||
timeTracker.setFilter(paginatorFilter);
|
||||
|
||||
// Insert leftPane component with limitingresources list
|
||||
insertionPointLeftPanel.appendChild(leftPane);
|
||||
leftPane.afterCompose();
|
||||
|
||||
insertionPointRightPanel.appendChild(timeTrackerComponent);
|
||||
// Initialize queues
|
||||
insertionPointRightPanel.appendChild(queueListComponent);
|
||||
queueListComponent.afterCompose();
|
||||
|
||||
dependencyList = generateDependencyComponentsList();
|
||||
if (dependencyList != null) {
|
||||
dependencyList.afterCompose();
|
||||
insertionPointRightPanel.appendChild(dependencyList);
|
||||
}
|
||||
// Initialize dependencies
|
||||
rebuildDependencies();
|
||||
|
||||
zoomChangedListener = new IZoomLevelChangedListener() {
|
||||
initializePagination();
|
||||
}
|
||||
|
||||
/**
|
||||
* Apparently it's necessary to append {@link DependencyList} to
|
||||
* insertionPointRightPanel again every time the list of dependencies is
|
||||
* regenerated. Otherwise tasks overflow if they don't fit in current page
|
||||
*
|
||||
*/
|
||||
private void rebuildDependencies() {
|
||||
dependencyList.clear();
|
||||
for (LimitingResourceQueueElement each : getLimitingResourceQueueElements()) {
|
||||
dependencyList.addDependenciesFor(each);
|
||||
}
|
||||
insertionPointRightPanel.appendChild(dependencyList);
|
||||
}
|
||||
|
||||
private Set<LimitingResourceQueueElement> getLimitingResourceQueueElements() {
|
||||
return queueListComponent.getLimitingResourceElementToQueueTaskMap()
|
||||
.keySet();
|
||||
}
|
||||
|
||||
private void initializeTimetracker() {
|
||||
timeTracker.addZoomListener(new IZoomLevelChangedListener() {
|
||||
@Override
|
||||
public void zoomLevelChanged(ZoomLevel newDetailLevel) {
|
||||
reloadTimetracker();
|
||||
|
|
@ -293,23 +288,44 @@ public class LimitingResourcesPanel extends HtmlMacroComponent {
|
|||
paginatorFilter.goToHorizontalPage(0);
|
||||
}
|
||||
|
||||
};
|
||||
this.timeTracker.addZoomListener(zoomChangedListener);
|
||||
|
||||
// Insert timetracker headers
|
||||
});
|
||||
timeTrackerHeader = createTimeTrackerHeader();
|
||||
timeTrackerComponent = createTimeTrackerComponent();
|
||||
insertionPointTimetracker.appendChild(timeTrackerHeader);
|
||||
insertionPointRightPanel.appendChild(timeTrackerComponent);
|
||||
timeTrackerHeader.afterCompose();
|
||||
timeTrackerComponent.afterCompose();
|
||||
|
||||
paginatorFilter.populateHorizontalListbox();
|
||||
}
|
||||
|
||||
private void rebuildDependencies() {
|
||||
dependencyList.clear();
|
||||
insertionPointRightPanel.appendChild(dependencyList);
|
||||
dependencyList = generateDependencyComponentsList();
|
||||
dependencyList.afterCompose();
|
||||
@SuppressWarnings("serial")
|
||||
private TimeTrackerComponent createTimeTrackerHeader() {
|
||||
return new TimeTrackerComponent(timeTracker) {
|
||||
|
||||
@Override
|
||||
protected void scrollHorizontalPercentage(int pixelsDisplacement) {
|
||||
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@SuppressWarnings("serial")
|
||||
private TimeTrackerComponent createTimeTrackerComponent() {
|
||||
return new TimeTrackerComponent(timeTracker) {
|
||||
@Override
|
||||
protected void scrollHorizontalPercentage(int pixelsDisplacement) {
|
||||
response("", new AuInvoke(queueListComponent,
|
||||
"adjustScrollHorizontalPosition", pixelsDisplacement
|
||||
+ ""));
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
private void initializePagination() {
|
||||
paginatorFilter = new PaginatorFilter();
|
||||
paginationUpButton.setDisabled(paginatorFilter.isLastPage());
|
||||
paginatorFilter.setInterval(timeTracker.getRealInterval());
|
||||
timeTracker.setFilter(paginatorFilter);
|
||||
paginatorFilter.populateHorizontalListbox();
|
||||
}
|
||||
|
||||
private void initializeBindings() {
|
||||
|
|
@ -325,16 +341,6 @@ public class LimitingResourcesPanel extends HtmlMacroComponent {
|
|||
insertionPointTimetracker = getFellow("insertionPointTimetracker");
|
||||
}
|
||||
|
||||
private LimitingDependencyList generateDependencyComponentsList() {
|
||||
Set<LimitingResourceQueueElement> queueElements = queueListComponent
|
||||
.getLimitingResourceElementToQueueTaskMap().keySet();
|
||||
|
||||
for (LimitingResourceQueueElement each : queueElements) {
|
||||
dependencyList.addDependenciesFor(each);
|
||||
}
|
||||
return dependencyList;
|
||||
}
|
||||
|
||||
public Map<LimitingResourceQueueElement, QueueTask> getQueueTaskMap() {
|
||||
return queueListComponent.getLimitingResourceElementToQueueTaskMap();
|
||||
}
|
||||
|
|
@ -345,20 +351,6 @@ public class LimitingResourcesPanel extends HtmlMacroComponent {
|
|||
getFellow("insertionPointTimetracker").getChildren().clear();
|
||||
}
|
||||
|
||||
public TimeTrackerComponent getTimeTrackerComponent() {
|
||||
return timeTrackerComponent;
|
||||
}
|
||||
|
||||
private TimeTrackerComponent createTimeTrackerHeader() {
|
||||
return new TimeTrackerComponent(timeTracker) {
|
||||
|
||||
@Override
|
||||
protected void scrollHorizontalPercentage(int pixelsDisplacement) {
|
||||
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
public void unschedule(QueueTask task) {
|
||||
LimitingResourceQueueElement queueElement = task.getLimitingResourceQueueElement();
|
||||
LimitingResourceQueue queue = queueElement.getLimitingResourceQueue();
|
||||
|
|
|
|||
|
|
@ -85,14 +85,6 @@ public class QueueComponent extends XulElement implements
|
|||
|
||||
private List<QueueTask> queueTasks = new ArrayList<QueueTask>();
|
||||
|
||||
public List<QueueTask> getQueueTasks() {
|
||||
return queueTasks;
|
||||
}
|
||||
|
||||
public void setLimitingResourceQueue(LimitingResourceQueue limitingResourceQueue) {
|
||||
this.limitingResourceQueue = limitingResourceQueue;
|
||||
}
|
||||
|
||||
private QueueComponent(
|
||||
final QueueListComponent queueListComponent,
|
||||
final TimeTracker timeTracker,
|
||||
|
|
@ -109,12 +101,24 @@ public class QueueComponent extends XulElement implements
|
|||
public void zoomLevelChanged(ZoomLevel detailLevel) {
|
||||
getChildren().clear();
|
||||
createChildren(limitingResourceQueue, timeTracker.getMapper());
|
||||
// invalidate();
|
||||
}
|
||||
};
|
||||
this.timeTracker.addZoomListener(zoomChangedListener);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void afterCompose() {
|
||||
appendContextMenus();
|
||||
}
|
||||
|
||||
public List<QueueTask> getQueueTasks() {
|
||||
return queueTasks;
|
||||
}
|
||||
|
||||
public void setLimitingResourceQueue(LimitingResourceQueue limitingResourceQueue) {
|
||||
this.limitingResourceQueue = limitingResourceQueue;
|
||||
}
|
||||
|
||||
private void createChildren(LimitingResourceQueue limitingResourceQueue,
|
||||
IDatesMapper mapper) {
|
||||
List<QueueTask> queueTasks = createQueueTasks(mapper,
|
||||
|
|
@ -509,9 +513,4 @@ public class QueueComponent extends XulElement implements
|
|||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void afterCompose() {
|
||||
appendContextMenus();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -76,7 +76,7 @@ public class QueueListComponent extends HtmlMacroComponent implements
|
|||
|
||||
private void insertAsComponent(LimitingResourceQueue queue) {
|
||||
QueueComponent component = QueueComponent.create(this, timeTracker, queue);
|
||||
this.appendChild(component);
|
||||
appendChild(component);
|
||||
fromQueueToComponent.put(queue, component);
|
||||
}
|
||||
|
||||
|
|
@ -130,8 +130,6 @@ public class QueueListComponent extends HtmlMacroComponent implements
|
|||
for (QueueComponent each : fromQueueToComponent.values()) {
|
||||
each.afterCompose();
|
||||
}
|
||||
response(null, new AuInvoke(QueueListComponent.this,
|
||||
"adjustResourceLoadRows"));
|
||||
}
|
||||
|
||||
public List<QueueTask> getQueueTasks() {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue