/*
* (c) Copyright 2010-2011 AgileBirds
*
* This file is part of OpenFlexo.
*
* OpenFlexo 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.
*
* OpenFlexo 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 OpenFlexo. If not, see <http://www.gnu.org/licenses/>.
*
*/
package org.openflexo.oo3;
import java.util.Enumeration;
import java.util.Vector;
import org.openflexo.xmlcode.XMLSerializable;
/**
* Please comment this class
*
* @author sguerin
*
*/
public class OO3Columns implements XMLSerializable {
public static final String NOTES_COLUMN = "NOTES";
public static final String OUTLINE_COLUMN = "OUTLINE";
public static final String DefaultOutlineColumnTitle = "Topic";
private int additionalColumnsCount = 0;
private OO3Column noteColumn;
private OO3Column outlineColumn;
public Vector<OO3Column> columns;
public OO3Columns() {
super();
columns = new Vector<OO3Column>();
createNoteColumn();
createOutlineColumn();
additionalColumnsCount = 0;
}
public int getAdditionalColumnsCount() {
return additionalColumnsCount;
}
public OO3Column getColumnNamed(String columnTitle) {
for (Enumeration e = columns.elements(); e.hasMoreElements();) {
OO3Column next = (OO3Column) e.nextElement();
if (next.name.equals(columnTitle)) {
return next;
}
}
return null;
}
public OO3Column getNoteColumn() {
return noteColumn;
}
public OO3Column getOutlineColumn() {
return outlineColumn;
}
public int getIndexOfColumnNamed(String columnTitle) {
OO3Column column = getColumnNamed(columnTitle);
if (column != null) {
return getIndexOfColumn(column);
}
return -1;
}
public int getIndexOfColumn(OO3Column column) {
return column.columnIndex;
}
public OO3Column createAdditionalColumn(String columnTitle) {
OO3Column column = OO3Column.createAdditionalColumn(columnTitle);
columns.add(column);
column.columnIndex = additionalColumnsCount + 2;
additionalColumnsCount++;
return column;
}
private void createNoteColumn() {
noteColumn = OO3Column.createNoteColumn();
columns.add(noteColumn);
}
private void createOutlineColumn() {
outlineColumn = OO3Column.createOutlineColumn(DefaultOutlineColumnTitle);
columns.add(outlineColumn);
}
public static class OO3Column implements XMLSerializable {
public String id;
public String type;
public String name;
public int width;
public int minimumWidth;
public int maximumWidth;
public int textExportWidth;
public boolean isNoteColumn;
public boolean isOutlineColumn;
public ColumnTitle columnTitle;
public OO3Style columnStyle;
int columnIndex;
public OO3Column() {
super();
generateColumnId();
columnIndex = -1;
type = "text";
width = 100;
minimumWidth = 13;
maximumWidth = 1000000;
textExportWidth = 80;
isNoteColumn = false;
isOutlineColumn = false;
columnStyle = null;
}
public OO3Column(String ct) {
this();
this.name = ct;
setTitle(ct);
}
public void setTitle(String ct) {
this.columnTitle = new ColumnTitle(ct);
}
public void setWidth(int aWidth) {
this.width = aWidth;
}
static OO3Column createNoteColumn() {
OO3Column returned = new OO3Column(null);
returned.name = NOTES_COLUMN;
returned.width = 18;
returned.minimumWidth = 18;
returned.maximumWidth = 18;
returned.textExportWidth = 1;
returned.isNoteColumn = true;
returned.isOutlineColumn = false;
returned.columnStyle = OO3Style.getNoteColumnStyle();
returned.columnIndex = 0;
return returned;
}
static OO3Column createOutlineColumn(String columnTitle) {
OO3Column returned = new OO3Column(columnTitle);
returned.name = OUTLINE_COLUMN;
returned.width = 400;
returned.isNoteColumn = false;
returned.isOutlineColumn = true;
returned.columnIndex = 1;
return returned;
}
static OO3Column createAdditionalColumn(String columnTitle) {
OO3Column returned = new OO3Column(columnTitle);
returned.width = 100;
returned.isNoteColumn = false;
returned.isOutlineColumn = false;
return returned;
}
private void generateColumnId() {
id = "OO3Column" + hashCode();
}
public static class ColumnTitle implements XMLSerializable {
public OO3Text title;
public ColumnTitle() {
super();
}
public ColumnTitle(String aTitle) {
super();
title = new OO3Text(aTitle);
}
}
}
}