/*
* OneCMDB, an open source configuration management project.
* Copyright 2007, Lokomo Systems AB, and individual contributors
* as indicated by the @authors tag. See the copyright.txt in the
* distribution for a full listing of individual contributors.
*
* This is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This software 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
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this software; if not, write to the Free
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
*/
package org.onecmdb.ui.gwt.modeller.client.view.navigation;
import org.gwtiger.client.widget.ScreenMenuItem;
import org.onecmdb.ui.gwt.modeller.client.OneCMDBModelCreator;
import org.onecmdb.ui.gwt.modeller.client.control.ModelInheritanceTreeControl;
import org.onecmdb.ui.gwt.toolkit.client.model.onecmdb.GWT_CiBean;
import org.onecmdb.ui.gwt.toolkit.client.view.screen.OneCMDBBaseScreen;
import org.onecmdb.ui.gwt.toolkit.client.view.tree.ChangeTreeRootTree;
import com.google.gwt.user.client.ui.ClickListener;
import com.google.gwt.user.client.ui.Tree;
import com.google.gwt.user.client.ui.TreeItem;
import com.google.gwt.user.client.ui.TreeListener;
import com.google.gwt.user.client.ui.Widget;
public class ModelCreatorNavigation extends OneCMDBBaseScreen implements ClickListener {
private Tree treePanel = new Tree();
public ModelCreatorNavigation() {
ScreenObjectTypeMenuItem mainMenu = new ScreenObjectTypeMenuItem(
createHeaderHTML("images/designer/model-designer_32.gif", "Model Designer"),
false,
OneCMDBModelCreator.SHOW_STATIC_CONTENT,
"static/welcome_model_designer.html");
TreeItem mainItem = addItem(treePanel, mainMenu);
ScreenObjectTypeMenuItem templateMenu = new ScreenObjectTypeMenuItem(
createHeaderHTML("images/designer/template-hierachy_32.gif", "Template Hierarchy"),
false,
OneCMDBModelCreator.SHOW_STATIC_CONTENT,
"static/welcome_template_hierarchy.html");
TreeItem templateHierachyItem = addItem(mainItem, templateMenu);
addTemlateTreeHock(templateHierachyItem);
// Transform menu.
ScreenObjectTypeMenuItem transformMenu = new ScreenObjectTypeMenuItem(
createHeaderHTML("images/designer/template-hierachy_32.gif", "Instance Import Control"),
false,
OneCMDBModelCreator.SHOW_STATIC_CONTENT,
"static/welcome_template_hierarchy.html");
TreeItem transformItem = addItem(mainItem, transformMenu);
ScreenMenuItem newTransformMenu = new ScreenMenuItem(
createHTML("images/designer/template-hierachy_16.gif", "New Transform"),
false,
OneCMDBModelCreator.NEW_TRANSFORM_SCREEN
);
addItem(transformItem, newTransformMenu);
ScreenMenuItem listTransformMenu = new ScreenMenuItem(
createHTML("images/designer/template-hierachy_16.gif", "List Transforms"),
false,
OneCMDBModelCreator.LIST_TRANSFORM_SCREEN);
addItem(transformItem, listTransformMenu);
initWidget(treePanel);
}
private void addTemlateTreeHock(TreeItem templateHierachyItem) {
templateHierachyItem.addItem("Loading....");
//treePanel.addItem(itil);
treePanel.setStyleName("mdv-form");
ModelInheritanceTreeControl control = new ModelInheritanceTreeControl();
control.setFilterInstances(Boolean.TRUE);
control.setRootState(true);
// Dummy, so the ci is selectable...
control.setClickListener(new ClickListener() {
public void onClick(Widget sender) {
// TODO Auto-generated method stub
}
});
control.setTreeListener(new TreeListener() {
public void onTreeItemSelected(TreeItem item) {
// Show a list of that template.
Object data = item.getUserObject();
if (data instanceof GWT_CiBean) {
OneCMDBModelCreator.get().showScreen(OneCMDBModelCreator.TEMPLATE_VIEW_SCREEN,
((GWT_CiBean)data).getAlias(), new Long(0));
}
}
public void onTreeItemStateChanged(TreeItem item) {
}
});
ChangeTreeRootTree templateTree = new ChangeTreeRootTree(treePanel, control);
templateTree.setTriggerItem(templateHierachyItem);
}
public boolean isRightPanel() {
return(false);
}
private TreeItem addItem(Tree tree, ScreenMenuItem widget) {
TreeItem childItem = new TreeItem();
childItem.setWidget(widget);
tree.addItem(childItem);
widget.addClickListener(this);
return(childItem);
}
private TreeItem addItem(TreeItem parentItem, ScreenMenuItem widget) {
TreeItem childItem = new TreeItem();
childItem.setWidget(widget);
parentItem.addItem(childItem);
widget.addClickListener(this);
return(childItem);
}
/**
* Creates an HTML fragment that places an image & caption together, for use
* in a group header.
*
* @param imageUrl the url of the icon image to be used
* @param caption the group caption
* @return the header HTML fragment
*/
private String createHeaderHTML(String imageUrl, String caption) {
return "<table align='left'><tr>" + "<td><img src='" + imageUrl + "'></td>"
+ "<td style='vertical-align:middle'><b style='white-space:nowrap'><a href='javascript:;'>"
+ caption + "</a></b></td>" + "</tr></table>";
}
private String createHTML(String imageURL, String caption) {
return "<table align='left'><tr><td><img src='" + imageURL + "'></td>"
+ "<td style='vertical-align:middle'><a style='white-space:nowrap' href='javascript:;'>"
+ caption + "</a></td>" + "</tr></table>";
/*
return "<a style='white-space:nowrap' href='javascript:;'>"
+ caption + "</a>";
*/
}
private String createHTML(String caption) {
return "<table align='left'><tr>"
+ "<td style='vertical-align:middle'><a style='white-space:nowrap' href='javascript:;'>"
+ caption + "</a></td>" + "</tr></table>";
/*
return "<a style='white-space:nowrap' href='javascript:;'>"
+ caption + "</a>";
*/
}
private String createHTMLWithTable(String caption) {
return "<table align='left'><tr>"
+ "<td><img src='mdv-menu.gif'></td><td style='vertical-align:middle'><a href='javascript:;'>"
+ caption + "</a></td>" + "</tr></table>";
}
public void onClick(Widget sender) {
try {
if (sender instanceof ScreenObjectTypeMenuItem) {
ScreenObjectTypeMenuItem screen= (ScreenObjectTypeMenuItem)sender;
getBaseEntryScreen().showScreen(screen.getScreenIndex(), screen.getObjectType(), new Long(0));
return;
}
if (sender instanceof ScreenMenuItem) {
ScreenMenuItem screen= (ScreenMenuItem)sender;
getBaseEntryScreen().showScreen(screen.getScreenIndex());
return;
}
}catch(Exception e) {
e.printStackTrace();
}
}
class ScreenObjectTypeMenuItem extends ScreenMenuItem {
private String objectType;
public ScreenObjectTypeMenuItem(String html, boolean wordWrap, int screenIndex, String objectType) {
super(html, wordWrap, screenIndex);
this.objectType = objectType;
}
public String getObjectType() {
return(this.objectType);
}
}
}