blob: 6ae700af7dc46acef169b537681ac58ad04817e7 [file] [log] [blame]
package org.apache.myfaces.tobago.example.demo;
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You 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.
*/
/*
* $Id$
*/
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import static org.apache.myfaces.tobago.TobagoConstants.ATTR_VALUE;
import static org.apache.myfaces.tobago.TobagoConstants.FACET_ITEMS;
import static org.apache.myfaces.tobago.TobagoConstants.RENDERER_TYPE_IN;
import org.apache.myfaces.tobago.component.ComponentUtil;
import org.apache.myfaces.tobago.component.UIInput;
import org.apache.myfaces.tobago.component.UISelectOne;
import org.apache.myfaces.tobago.context.ResourceManagerUtil;
import org.apache.myfaces.tobago.event.SheetStateChangeEvent;
import org.apache.myfaces.tobago.event.TabChangeListener;
import org.apache.myfaces.tobago.example.demo.model.solar.Solar;
import org.apache.myfaces.tobago.example.demo.model.solar.SolarObject;
import org.apache.myfaces.tobago.model.SheetState;
import org.apache.myfaces.tobago.model.TreeState;
import org.apache.myfaces.tobago.taglib.component.ToolBarTag;
import javax.faces.application.FacesMessage;
import javax.faces.component.UIColumn;
import javax.faces.component.UIComponent;
import javax.faces.context.ExternalContext;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;
import javax.faces.model.SelectItem;
import javax.faces.validator.ValidatorException;
import javax.servlet.http.HttpSession;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.MutableTreeNode;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
public class TobagoDemoController {
private static final Log LOG = LogFactory.getLog(TobagoDemoController.class);
private String[] salutation;
private SelectItem[] salutationItems;
private boolean[] bool;
private boolean update;
private Boolean boolTest;
private String[] text;
private SolarObject[] solarArray;
private List<SolarObject> solarList;
private List<UIColumn> solarArrayColumns;
private String solarArrayColumnLayout;
private TreeState treeState;
private DefaultMutableTreeNode tree;
private boolean showJunctions;
private int value;
private boolean showIcons;
private boolean showRoot;
private boolean showRootJunction;
private boolean multiselect;
private String selectionType;
private SelectItem[] selectionItems;
private boolean mutable;
private boolean required;
private Solar solar;
private Date date = new Date();
private Object tabState0;
private Object tabState1;
private Object tabState2;
private Object tabState3;
private SheetState sheetState;
private String toolbarIconSize;
private SelectItem[] toolbarIconItems;
private String toolbarTextPosition;
private SelectItem[] toolbarTextItems;
private TabChangeListener tabChangeListener;
public TobagoDemoController() {
String[] salutationKeys = {
"salutation_unknown",
"salutation_mr",
"salutation_mrs",
"salutation_family"
};
salutationItems = getSelectItems(salutationKeys, "demo");
this.salutation = new String[]{"", "", "", ""};
bool = new boolean[10];
bool[0] = true;
bool[1] = false;
bool[2] = true;
bool[3] = false;
bool[4] = true;
bool[5] = false;
bool[6] = true;
bool[7] = false;
bool[8] = true;
bool[9] = false;
boolTest = Boolean.TRUE;
text = new String[11];
text[0] = "Value 1";
text[1] = "Value 2";
text[2] = "Value 3";
text[3] = "Value 4";
text[4] = "Value 5";
text[5] = "longer \nmultiline\nText";
text[6] = "you can't edit me";
text[7] = "inline";
text[8] = "labeled";
text[9] = "longer Text abcdefg hijklmnop";
text[10]
= "**strong text**\n\n__emphasis__\n\nnormaler text\n\n__dieses "
+ "ist emphasis__\n\n**und nochmal strong**\n\n**__ strong und emphasis__**";
solarArray = SolarObject.getArray();
solarList = SolarObject.getList();
solarArrayColumns = createSolarArrayColumns();
solarArrayColumnLayout = "3*; 3*; 3*";
tree = new DefaultMutableTreeNode(
new Node("Root Node", "root"));
tree.insert(new DefaultMutableTreeNode(new Node("Sports", "sports")), 0);
tree.insert(new DefaultMutableTreeNode(new Node("Movies", "movies")), 0);
DefaultMutableTreeNode music = new DefaultMutableTreeNode(
new Node("Music", "music"));
tree.insert(music, 0);
tree.insert(new DefaultMutableTreeNode(new Node("Games", "games")), 0);
MutableTreeNode temp = new DefaultMutableTreeNode(
new Node("Science", "science"));
temp.insert(
new DefaultMutableTreeNode(new Node("Geography", "geography")), 0);
temp.insert(
new DefaultMutableTreeNode(new Node("Mathematics", "math")), 0);
DefaultMutableTreeNode temp2 = new DefaultMutableTreeNode(
new Node("Astronomy", "astro"));
temp2.insert(new DefaultMutableTreeNode(new Node("Education", "edu")), 0);
temp2.insert(new DefaultMutableTreeNode(new Node("Pictures", "pic")), 0);
temp.insert(temp2, 2);
tree.insert(temp, 2);
treeState = new TreeState();
treeState.addExpandState(tree);
treeState.addSelection(temp2);
treeState.setMarker(music);
String[] values = {"none", "single", "singleLeafOnly", "multi", "multiLeafOnly"};
selectionItems = getSelectItems(values, "demo");
selectionType = (String) selectionItems[0].getValue();
showIcons = true;
showJunctions = true;
showRoot = true;
showRootJunction = true;
solar = new Solar();
String[] toolbarIconKeys
= {ToolBarTag.ICON_OFF, ToolBarTag.ICON_SMALL, ToolBarTag.ICON_BIG};
toolbarIconItems = getSelectItems(toolbarIconKeys, "demo");
toolbarIconSize = ToolBarTag.ICON_SMALL;
String[] toolbarTextKeys =
{ToolBarTag.LABEL_OFF, ToolBarTag.LABEL_BOTTOM, ToolBarTag.LABEL_RIGHT};
toolbarTextItems = getSelectItems(toolbarTextKeys, "demo");
toolbarTextPosition = ToolBarTag.LABEL_BOTTOM;
}
public boolean isUpdate() {
update = !update;
return update;
}
public void resetSession() throws IOException {
FacesContext facesContext = FacesContext.getCurrentInstance();
HttpSession session = (HttpSession) facesContext.getExternalContext().getSession(false);
if (session != null) {
session.invalidate();
}
ExternalContext externalContext = facesContext.getExternalContext();
externalContext.redirect(externalContext.getRequestContextPath());
facesContext.responseComplete();
}
public TabChangeListener getTabChangeListener() {
LOG.error("getTabChangeListener " + tabChangeListener);
return tabChangeListener;
}
public void setTabChangeListener(TabChangeListener tabChangeListener) {
LOG.error("Setting TabChangeListener " + tabChangeListener);
this.tabChangeListener = tabChangeListener;
}
private List<UIColumn> createSolarArrayColumns() {
List<UIColumn> columns = new ArrayList<UIColumn>(3);
UIInput textbox = (UIInput)
ComponentUtil.createComponent(UIInput.COMPONENT_TYPE, RENDERER_TYPE_IN);
ComponentUtil.setStringProperty(
textbox, ATTR_VALUE, "#{luminary.population}");
columns.add(ComponentUtil.createColumn(
"#{overviewBundle.solarArrayPopulation}", "true", null, textbox));
columns.add(ComponentUtil.createTextColumn(
"#{overviewBundle.solarArrayDistance}", "true", "right", "#{luminary.distance}"));
columns.add(ComponentUtil.createTextColumn(
"#{overviewBundle.solarArrayPeriod}", "true", "right", "#{luminary.period}"));
return columns;
}
public static SelectItem[] getSelectItems(String[] keys, String bundle) {
FacesContext facesContext = FacesContext.getCurrentInstance();
SelectItem[] items = new SelectItem[keys.length];
for (int i = 0; i < items.length; i++) {
String label = ResourceManagerUtil.getPropertyNotNull(facesContext, bundle, keys[i]);
items[i] = new SelectItem(keys[i], label);
}
return items;
}
public void updateTree() {
}
public static Node createNode(String name, String id) {
return new Node(name, id);
}
public String clickButton() {
LOG.info("clickButton");
return "display";
}
public String getSelectable() {
return multiselect ? "multi" : "none";
}
public String[] getSalutation() {
return salutation;
}
public void setSalutation(String[] salutation) {
this.salutation = salutation;
}
public SelectItem[] getSalutationItems() {
return salutationItems;
}
public void setSalutationItems(SelectItem[] salutationItems) {
this.salutationItems = salutationItems;
}
public boolean[] getBool() {
return this.bool;
}
public void setBool(boolean[] argBool) {
this.bool = argBool;
}
public Boolean getBoolTest() {
return boolTest;
}
public void setBoolTest(Boolean boolTest) {
this.boolTest = boolTest;
}
public String[] getText() {
return text;
}
public void setText(String[] text) {
this.text = text;
}
public SolarObject[] getSolarArray() {
return solarArray;
}
public void setSolarArray(SolarObject[] solarArray) {
this.solarArray = solarArray;
}
public List<SolarObject> getSolarList() {
solarList.get(0).setDistance(value++);
if (value > 100) {
value = 0;
}
return filteredList == null ? solarList : filteredList;
}
public void setSolarList(List<SolarObject> solarList) {
this.solarList = solarList;
}
public List<UIColumn> getSolarArrayColumns() {
return solarArrayColumns;
}
public void setSolarArrayColumns(List<UIColumn> solarArrayColumns) {
this.solarArrayColumns = solarArrayColumns;
}
public String getSolarArrayColumnLayout() {
return solarArrayColumnLayout;
}
public void setSolarArrayColumnLayout(String solarArrayColumnLayout) {
this.solarArrayColumnLayout = solarArrayColumnLayout;
}
public DefaultMutableTreeNode getTree() {
return tree;
}
public void setTree(DefaultMutableTreeNode tree) {
this.tree = tree;
}
public TreeState getTreeState() {
return treeState;
}
public void setTreeState(TreeState treeState) {
this.treeState = treeState;
}
public boolean isShowJunctions() {
return showJunctions;
}
public void setShowJunctions(boolean showJunctions) {
this.showJunctions = showJunctions;
}
public boolean isShowIcons() {
return showIcons;
}
public void setShowIcons(boolean showIcons) {
this.showIcons = showIcons;
}
public boolean isShowRoot() {
return showRoot;
}
public void setShowRoot(boolean showRoot) {
this.showRoot = showRoot;
}
public boolean isShowRootJunction() {
return showRootJunction;
}
public void setShowRootJunction(boolean showRootJunction) {
this.showRootJunction = showRootJunction;
}
public boolean isMultiselect() {
return multiselect;
}
public void setMultiselect(boolean multiselect) {
this.multiselect = multiselect;
}
public String getSelectionType() {
return selectionType;
}
public void setSelectionType(String selectionType) {
this.selectionType = selectionType;
}
public SelectItem[] getSelectionItems() {
return selectionItems;
}
public void setSelectionItems(SelectItem[] selectionItems) {
this.selectionItems = selectionItems;
}
public boolean isMutable() {
return mutable;
}
public void setMutable(boolean mutable) {
this.mutable = mutable;
}
public boolean isRequired() {
return required;
}
public void setRequired(boolean required) {
this.required = required;
}
public Solar getSolar() {
return solar;
}
public void setSolar(Solar solar) {
this.solar = solar;
}
public Date getDate() {
return date;
}
public void setDate(Date date) {
this.date = date;
}
public Object getTabState0() {
return tabState0;
}
public void setTabState0(Object tabState0) {
this.tabState0 = tabState0;
}
public Object getTabState1() {
return tabState1;
}
public void setTabState1(Object tabState1) {
this.tabState1 = tabState1;
}
public Object getTabState2() {
return tabState2;
}
public void setTabState2(Object tabState2) {
this.tabState2 = tabState2;
}
public Object getTabState3() {
return tabState3;
}
public void setTabState3(Object tabState3) {
this.tabState3 = tabState3;
}
public SheetState getSheetState() {
return sheetState;
}
public void setSheetState(SheetState sheetState) {
this.sheetState = sheetState;
}
public void stateChangeListener(SheetStateChangeEvent e) {
LOG.error("SheetState has Changed: " + e);
}
public void customValidator(FacesContext context, UIComponent component, Object value) throws ValidatorException {
if (value == null) {
return;
}
if (!"tobago".equalsIgnoreCase(value.toString())) {
throw new ValidatorException(new FacesMessage(FacesMessage.SEVERITY_ERROR, "Please type in 'Tobago'",
"Please type in 'Tobago'"));
}
}
public SelectItem[] getToolbarIconItems() {
return toolbarIconItems;
}
public String getToolbarIconSize() {
return toolbarIconSize;
}
public void setToolbarIconSize(String toolbarIconSize) {
this.toolbarIconSize = toolbarIconSize;
}
public SelectItem[] getToolbarTextItems() {
return toolbarTextItems;
}
public String getToolbarTextPosition() {
return toolbarTextPosition;
}
public void setToolbarTextPosition(String toolbarTextPosition) {
this.toolbarTextPosition = toolbarTextPosition;
}
public Object getNull() {
return null;
}
public void setNull(Object o) {
}
private List<SolarObject> filteredList;
private SelectItem[] orbitItems;
private static final String SHOW_ALL_ORBITS = "Show all";
public void selectOrbit(ActionEvent event) {
SolarObject clicked = (SolarObject) ComponentUtil.findParameter(event.getComponent(), "luminary");
boolean add = false;
List<Integer> selectedRows = sheetState.getSelectedRows();
for (int i = 0; i < solarList.size(); i++) {
if (clicked.getOrbit().equals(solarList.get(i).getOrbit())) {
add = !selectedRows.contains(i);
LOG.info(" add = " + add);
LOG.info(" i = " + i);
break;
}
}
for (int i = 0; i < solarList.size(); i++) {
if (clicked.getOrbit().equals(solarList.get(i).getOrbit())) {
if (add && !selectedRows.contains(i)) {
selectedRows.add(i);
} else {
selectedRows.remove((Object) i);
}
}
}
}
public void filterOrbit(ActionEvent event) {
UISelectOne selectOne = (UISelectOne) event.getComponent().getFacet(FACET_ITEMS);
if (filteredList == null) {
filteredList = new ArrayList<SolarObject>();
} else {
filteredList.clear();
}
String filter = (String) selectOne.getValue();
if (SHOW_ALL_ORBITS.equals(filter)) {
filteredList.addAll(solarList);
} else {
for (SolarObject solarObject : solarList) {
if (solarObject.getOrbit().equalsIgnoreCase(filter)) {
filteredList.add(solarObject);
}
}
}
}
public SelectItem[] getOrbitItems() {
if (orbitItems == null) {
createOrbitItems();
}
return orbitItems;
}
private SelectItem[] createOrbitItems() {
orbitItems = new SelectItem[11];
orbitItems[0] = new org.apache.myfaces.tobago.model.SelectItem(SHOW_ALL_ORBITS);
orbitItems[1] = new org.apache.myfaces.tobago.model.SelectItem("Sun");
orbitItems[2] = new org.apache.myfaces.tobago.model.SelectItem("Mercury");
orbitItems[3] = new org.apache.myfaces.tobago.model.SelectItem("Venus");
orbitItems[4] = new org.apache.myfaces.tobago.model.SelectItem("Earth");
orbitItems[5] = new org.apache.myfaces.tobago.model.SelectItem("Mars");
orbitItems[6] = new org.apache.myfaces.tobago.model.SelectItem("Jupiter");
orbitItems[7] = new org.apache.myfaces.tobago.model.SelectItem("Saturn");
orbitItems[8] = new org.apache.myfaces.tobago.model.SelectItem("Uranus");
orbitItems[9] = new org.apache.myfaces.tobago.model.SelectItem("Neptune");
orbitItems[10] = new org.apache.myfaces.tobago.model.SelectItem("Pluto");
return orbitItems;
}
// public void setOrbitFilter(String orbitFilter) {
// this.orbitFilter = orbitFilter;
// }
//
// public String getOrbitFilter() {
// return orbitFilter;
// }
public static class Node {
private String name;
private String id;
public Node(String name, String id) {
this.name = name;
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String toString() {
return "Node name="+name+" id="+id;
}
}
}