/*
* Created on 22.6.2004
*
* Copyright (C) 2004 Idega hf. All Rights Reserved.
*
* This software is the proprietary information of Idega hf.
* Use is subject to license terms.
*/
package com.idega.development.presentation;
import java.util.Collection;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
import com.idega.builder.data.IBPageObjectView;
import com.idega.builder.data.IBPageObjectViewHome;
import com.idega.core.component.data.ICObjectBMPBean;
import com.idega.data.IDOLookup;
import com.idega.idegaweb.IWMainApplication;
import com.idega.presentation.Block;
import com.idega.presentation.IWContext;
import com.idega.presentation.Table;
import com.idega.presentation.text.Link;
import com.idega.presentation.text.Text;
import com.idega.presentation.ui.DropdownMenu;
import com.idega.presentation.ui.Form;
import com.idega.presentation.ui.SubmitButton;
import com.idega.presentation.ui.TextInput;
/**
* @author aron
*
* PageObjects shows where objects are placed in the pagetree
*/
public class PageObjects extends Block {
private static final String PRM_PAGEID = "iw_bpid";
private static final String PRM_PAGENAME = "iw_bpni";
private static final String PRM_CLASSNAME = "iw_clni";
private static final String PRM_TYPE = "iw_otpe";
private static final String BUNDLE_PARAMETER = "iw_b_p_s";
private Collection pageObjects = null;
/* (non-Javadoc)
* @see com.idega.presentation.PresentationObject#main(com.idega.presentation.IWContext)
*/
public void main(IWContext iwc) throws Exception {
add(IWDeveloper.getTitleTable(this.getClass()));
if (!iwc.isIE()) {
getParentPage().setBackgroundColor("#FFFFFF");
}
//String bundleIdentifier = iwc.getParameter(BUNDLE_PARAMETER);
IWMainApplication iwma = iwc.getIWMainApplication();
DropdownMenu bundles = BundlePropertySetter.getRegisteredBundlesDropdown(iwma, BUNDLE_PARAMETER);
bundles.addMenuElementFirst("none", "none");
//bundles.keepStatusOnAction();
DropdownMenu typesDrop = new DropdownMenu(PRM_TYPE);
List componentTypes = ICObjectBMPBean.getAvailableComponentTypes();
typesDrop.addMenuElement("","Object type");
Collections.sort(componentTypes);
for (Iterator iter = componentTypes.iterator(); iter.hasNext();) {
typesDrop.addMenuElement((String)iter.next());
}
typesDrop.keepStatusOnAction();
TextInput pageIdInput = new TextInput(PRM_PAGEID);
TextInput pageNameInput = new TextInput(PRM_PAGENAME);
TextInput classNameInput = new TextInput(PRM_CLASSNAME);
classNameInput.setLength(40);
SubmitButton button1 = new SubmitButton("Search");
Form form = new Form();
form.maintainParameter(IWDeveloper.PARAMETER_CLASS_NAME);
Table table = new Table();
table.add(getHeader("Page id"),1,1);
table.add(getHeader("Page name"),2,1);
table.add(getHeader("Bundle"),3,1);
table.add(getHeader("Class"),4,1);
table.add(pageIdInput,1,2);
table.add(pageNameInput,2,2);
table.add(bundles,3,2);
table.add(classNameInput,4,2);
table.add(button1,1,3);
table.add(typesDrop,2,3);
form.add(table);
add(Text.getBreak());
add(form);
add(Text.getBreak());
IBPageObjectViewHome instanceHome = (IBPageObjectViewHome)IDOLookup.getHome(IBPageObjectView.class);
//boolean showInstanceCount = false;
boolean isObjectTypeSet = iwc.isParameterSet(PRM_TYPE);
String objectType = null;
if(isObjectTypeSet) {
objectType = iwc.getParameter(PRM_TYPE);
}
this.pageObjects = null;
if(iwc.isParameterSet(PRM_PAGEID)){
String pageId = iwc.getParameter(PRM_PAGEID);
if(isObjectTypeSet) {
this.pageObjects = instanceHome.findByPageAndObjectType(Integer.valueOf(pageId),objectType);
}
else {
this.pageObjects = instanceHome.findByPage(Integer.valueOf(pageId));
}
presentatePageIdObjects(iwc);
}
else if(iwc.isParameterSet(PRM_PAGENAME)){
String pageName = iwc.getParameter(PRM_PAGENAME);
if(isObjectTypeSet) {
this.pageObjects = instanceHome.findByPageNameAndObjectType(pageName,objectType);
}
else {
this.pageObjects = instanceHome.findByPageName(pageName);
}
presentatePageNameObjects(iwc);
}
else if(iwc.isParameterSet(PRM_CLASSNAME)){
String className = iwc.getParameter(PRM_CLASSNAME);
if(isObjectTypeSet) {
this.pageObjects = instanceHome.findByClassNameAndObjectType(className,objectType);
}
else {
this.pageObjects = instanceHome.findByClassName(className);
}
presentateClassNameObjects(iwc);
}
else if(iwc.isParameterSet(BUNDLE_PARAMETER)){
String bundle = iwc.getParameter(BUNDLE_PARAMETER);
if(isObjectTypeSet) {
this.pageObjects = instanceHome.findByBundleAndObjectType(bundle,objectType);
}
else {
;
}
this.pageObjects = instanceHome.findByBundle(bundle);
presentateBundleObjects(iwc);
}
}
private void presentatePageIdObjects(IWContext iwc){
if(this.pageObjects!=null && !this.pageObjects.isEmpty()){
Table T = new Table();
T.setColumns(6);
//int i = 0;
int row = 1;
int lastPageId = -1;
T.add(getHeader("Instance id"),1,row);
T.add(getHeader("Object id"),2,row);
T.add(getHeader("Object name"),3,row);
T.add(getHeader("Object type"),4,row);
T.add(getHeader("Bundle"),5,row);
T.add(getHeader("Class"),6,row);
row++;
for (Iterator iter = this.pageObjects.iterator(); iter.hasNext();) {
IBPageObjectView pageObject = (IBPageObjectView) iter.next();
int currentPageId = pageObject.getPageId().intValue();
if(lastPageId!=currentPageId){
row++;
Link pageIdLink = new Link(getHeader(pageObject.getPageId().toString()));
pageIdLink.maintainParameter(IWDeveloper.PARAMETER_CLASS_NAME,iwc);
pageIdLink.addParameter(PRM_PAGEID,pageObject.getPageId().toString());
T.add(getHeader("Page ID: "),1,row);
T.add(pageIdLink,1,row);
T.add(getHeader("Page Name: "+pageObject.getPageName()),3,row);
T.add(getHeader("Template Id: "+pageObject.getTemplateId()),5,row);
T.mergeCells(1,row,2,row);
T.mergeCells(3,row,4,row);
T.mergeCells(5,row,6,row);
row++;
}
T.add(getText(String.valueOf(pageObject.getObjectInstanceId())),1,row);
T.add(getText(String.valueOf(pageObject.getObjectId())),2,row);
T.add(getText(pageObject.getObjectName()),3,row);
T.add(getText(pageObject.getObjectType()),4,row);
T.add(getText(pageObject.getBundleName()),5,row);
T.add(getText(pageObject.getClassName()),6,row);
row++;
lastPageId = currentPageId;
}
add(T);
}
}
private Text getText(String text){
Text t = new Text(text);
return t;
}
private Text getHeader(String text){
return IWDeveloper.getText(text);
}
private void presentatePageNameObjects(IWContext iwc){
presentatePageIdObjects(iwc);
}
private void presentateClassNameObjects(IWContext iwc){
presentatePageIdObjects(iwc);
}
private void presentateBundleObjects(IWContext iwc){
presentatePageIdObjects(iwc);
}
}