/*
Copyright 2014 BarD Software s.r.o
This file is part of GanttProject, an opensource project management tool.
GanttProject is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
GanttProject is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with GanttProject. If not, see <http://www.gnu.org/licenses/>.
*/
package net.sourceforge.ganttproject;
import java.util.ArrayList;
import java.util.List;
import com.google.common.base.Objects;
import net.sourceforge.ganttproject.language.GanttLanguage;
import biz.ganttproject.core.model.task.TaskDefaultColumn;
import biz.ganttproject.core.table.ColumnList;
import biz.ganttproject.core.table.ColumnList.Column;
/**
* Default columns in the resource table
*
* @author dbarashev (Dmitry Barashev)
*/
public enum ResourceDefaultColumn {
NAME(new ColumnList.ColumnStub("0", null, true, 0, 200), String.class, "tableColResourceName", true),
ROLE(new ColumnList.ColumnStub("1", null, true, 1, 75), String.class, "tableColResourceRole", true),
EMAIL(new ColumnList.ColumnStub("2", null, false, -1, 75), String.class, "tableColResourceEMail", true),
PHONE(new ColumnList.ColumnStub("3", null, false, -1, 50), String.class, "tableColResourcePhone", true),
ROLE_IN_TASK(new ColumnList.ColumnStub("4", null, false, -1, 75), String.class, "tableColResourceRoleForTask", true),
STANDARD_RATE(new ColumnList.ColumnStub("5", null, false, -1, 75), Double.class, "tableColResourceRate", true),
TOTAL_COST(new ColumnList.ColumnStub("6", null, false, -1, 50), Double.class, "tableColResourceCost", false);
private final Column myDelegate;
private final boolean isEditable;
private final String myNameKey;
private final Class<?> myValueClass;
private ResourceDefaultColumn(ColumnList.Column delegate, Class<?> valueClass, String nameKey, boolean editable) {
myDelegate = delegate;
myNameKey = nameKey;
isEditable = editable;
myValueClass = valueClass;
}
public Column getStub() {
return myDelegate;
}
static List<Column> getColumnStubs() {
List<Column> result = new ArrayList<Column>();
for (ResourceDefaultColumn dc : values()) {
result.add(dc.myDelegate);
}
return result;
}
public boolean isEditable() {
return isEditable;
}
public String getName() {
return Objects.firstNonNull(GanttLanguage.getInstance().getText(myNameKey), myNameKey);
}
public Class<?> getValueClass() {
return myValueClass;
}
public static ResourceDefaultColumn find(String id) {
for (ResourceDefaultColumn column : values()) {
if (column.getStub().getID().equals(id)) {
return column;
}
}
return null;
}
}