package org.xmind.ui.internal.outline.resource;
import org.xmind.core.ISheet;
import org.xmind.ui.internal.outline.OutlineIndexModelPart;
import org.xmind.ui.mindmap.IWorkbookRef;
public class OutlineResources {
private IOutlineResource markerResourceForWorkbook;
private IOutlineResource markerResourceForSheet;
private IOutlineResource labelResourceForWorkbook;
private IOutlineResource labelResourceForSheet;
private IOutlineResource assigneeResourceForWorkbook;
private IOutlineResource assigneeResourceForSheet;
private ITaskDateResource taskDateResourceForWorkbook;
private ITaskDateResource taskDateResourceForSheet;
private IAZResource azResourceForWorkbook;
private IAZResource azResourceForSheet;
public Object getResourceForSheet(ISheet sheet, int indexType,
boolean forceUpdate) {
Object resource = null;
if (sheet != null)
switch (indexType) {
case OutlineIndexModelPart.OUTLINE_TYPE_NONE:
resource = sheet;
break;
case OutlineIndexModelPart.OUTLINE_TYPE_BY_MARKERS:
resource = getMarkerResourceForSheet(sheet, forceUpdate);
break;
case OutlineIndexModelPart.OUTLINE_TYPE_BY_LABELS:
resource = getLabelResourceForSheet(sheet, forceUpdate);
break;
case OutlineIndexModelPart.OUTLINE_TYPE_BY_ASSIGNEE:
resource = getAssigneeResourceForSheet(sheet, forceUpdate);
break;
case OutlineIndexModelPart.OUTLINE_TYPE_BY_STARTDATE:
resource = getTaskDateResourceForSheet(sheet, indexType,
forceUpdate);
break;
case OutlineIndexModelPart.OUTLINE_TYPE_BY_ENDDATE:
resource = getTaskDateResourceForSheet(sheet, indexType,
forceUpdate);
break;
case OutlineIndexModelPart.OUTLINE_TYPE_BY_AZ:
resource = getAZResourceForSheet(sheet, true, forceUpdate);
break;
case OutlineIndexModelPart.OUTLINE_TYPE_BY_ZA:
resource = getAZResourceForSheet(sheet, false, forceUpdate);
break;
}
return resource;
}
public Object getResourceForWorkbook(IWorkbookRef workbookRef,
int indexType, boolean forceUpdate) {
Object resource = null;
if (workbookRef != null)
switch (indexType) {
case OutlineIndexModelPart.OUTLINE_TYPE_NONE:
resource = workbookRef;
break;
case OutlineIndexModelPart.OUTLINE_TYPE_BY_MARKERS:
resource = getMarkerResourceForWorkbook(workbookRef,
forceUpdate);
break;
case OutlineIndexModelPart.OUTLINE_TYPE_BY_LABELS:
resource = getLabelResourceForWorkbook(workbookRef,
forceUpdate);
break;
case OutlineIndexModelPart.OUTLINE_TYPE_BY_ASSIGNEE:
resource = getAssigneeResourceForWorkbook(workbookRef,
forceUpdate);
break;
case OutlineIndexModelPart.OUTLINE_TYPE_BY_STARTDATE:
resource = getTaskDateResourceForWorkbook(workbookRef,
indexType, forceUpdate);
break;
case OutlineIndexModelPart.OUTLINE_TYPE_BY_ENDDATE:
resource = getTaskDateResourceForWorkbook(workbookRef,
indexType, forceUpdate);
break;
case OutlineIndexModelPart.OUTLINE_TYPE_BY_AZ:
resource = getAZResourceForWorkbook(workbookRef, true,
forceUpdate);
break;
case OutlineIndexModelPart.OUTLINE_TYPE_BY_ZA:
resource = getAZResourceForWorkbook(workbookRef, false,
forceUpdate);
break;
}
return resource;
}
private IOutlineResource getMarkerResourceForWorkbook(
IWorkbookRef workbookRef, boolean forceUpdate) {
if (markerResourceForWorkbook != null && forceUpdate) {
markerResourceForWorkbook.reset(workbookRef, true);
}
if (markerResourceForWorkbook == null)
markerResourceForWorkbook = new MarkerResourceForWorkbook(
workbookRef);
return markerResourceForWorkbook;
}
private IOutlineResource getMarkerResourceForSheet(ISheet sheet,
boolean forceUpdate) {
if (markerResourceForSheet != null && forceUpdate) {
markerResourceForSheet.reset(sheet, true);
}
if (markerResourceForSheet == null)
markerResourceForSheet = new MarkerResourceForSheet(sheet);
return markerResourceForSheet;
}
private IOutlineResource getLabelResourceForSheet(ISheet sheet,
boolean forceUpdate) {
if (labelResourceForSheet != null && forceUpdate) {
labelResourceForSheet.reset(sheet, true);
}
if (labelResourceForSheet == null)
labelResourceForSheet = new LabelResourceForSheet(sheet);
return labelResourceForSheet;
}
private IOutlineResource getLabelResourceForWorkbook(
IWorkbookRef workbookRef, boolean forceUpdate) {
if (labelResourceForWorkbook != null && forceUpdate) {
labelResourceForWorkbook.reset(workbookRef, true);
}
if (labelResourceForWorkbook == null)
labelResourceForWorkbook = new LabelResourceForWorkbook(
workbookRef);
return labelResourceForWorkbook;
}
private IOutlineResource getAssigneeResourceForSheet(ISheet sheet,
boolean forceUpdate) {
if (assigneeResourceForSheet != null && forceUpdate) {
assigneeResourceForSheet.reset(sheet, true);
}
if (assigneeResourceForSheet == null)
assigneeResourceForSheet = new AssigneeResourceForSheet(sheet);
return assigneeResourceForSheet;
}
private IOutlineResource getAssigneeResourceForWorkbook(
IWorkbookRef workbookRef, boolean forceUpdate) {
if (assigneeResourceForWorkbook != null && forceUpdate) {
assigneeResourceForWorkbook.reset(workbookRef, true);
}
if (assigneeResourceForWorkbook == null)
assigneeResourceForWorkbook = new AssigneeResourceForWorkbook(
workbookRef);
return assigneeResourceForWorkbook;
}
private IOutlineResource getTaskDateResourceForSheet(ISheet sheet,
int taskDateType, boolean forceUpdate) {
if (taskDateResourceForSheet != null && forceUpdate) {
taskDateResourceForSheet.reset(sheet, forceUpdate);
}
if (taskDateResourceForSheet == null)
taskDateResourceForSheet = new TaskDateResourceForSheet(sheet,
taskDateType);
taskDateResourceForSheet.setTaskDateResourceType(taskDateType);
return taskDateResourceForSheet;
}
private IOutlineResource getTaskDateResourceForWorkbook(
IWorkbookRef workbookRef, int taskDateType, boolean forceUpdate) {
if (taskDateResourceForWorkbook != null && forceUpdate) {
taskDateResourceForWorkbook.reset(workbookRef, forceUpdate);
}
if (taskDateResourceForWorkbook == null)
taskDateResourceForWorkbook = new TaskDateResourceForWorkbook(
workbookRef, taskDateType);
taskDateResourceForWorkbook.setTaskDateResourceType(taskDateType);
return taskDateResourceForWorkbook;
}
private IOutlineResource getAZResourceForSheet(ISheet sheet,
boolean isPositiveSequence, boolean forceUpdate) {
if (azResourceForSheet != null && forceUpdate) {
azResourceForSheet.reset(sheet, true);
}
if (azResourceForSheet == null) {
azResourceForSheet = new AZResourceForSheet(sheet);
}
azResourceForSheet.setSequence(isPositiveSequence);
return azResourceForSheet;
}
private IOutlineResource getAZResourceForWorkbook(IWorkbookRef workbookRef,
boolean isPositiveSequence, boolean forceUpdate) {
if (azResourceForWorkbook != null && forceUpdate) {
azResourceForWorkbook.reset(workbookRef, true);
}
if (azResourceForWorkbook == null) {
azResourceForWorkbook = new AZResourceForWorkbook(workbookRef);
}
azResourceForWorkbook.setSequence(isPositiveSequence);
return azResourceForWorkbook;
}
}