package com.idega.block.contract.presentation;
import java.sql.SQLException;
import java.util.List;
import com.idega.block.contract.business.ContractBusiness;
import com.idega.block.contract.business.ContractFinder;
import com.idega.block.contract.business.ContractWriter;
import com.idega.block.contract.data.ContractCategory;
import com.idega.block.contract.data.ContractCategoryHome;
import com.idega.block.contract.data.ContractTag;
import com.idega.block.contract.data.ContractText;
import com.idega.data.IDOLookup;
import com.idega.data.IDOLookupException;
import com.idega.idegaweb.IWBundle;
import com.idega.idegaweb.IWResourceBundle;
import com.idega.presentation.IWContext;
import com.idega.presentation.PresentationObject;
import com.idega.presentation.Table;
import com.idega.presentation.text.Link;
import com.idega.presentation.ui.BackButton;
import com.idega.presentation.ui.CheckBox;
import com.idega.presentation.ui.DropdownMenu;
import com.idega.presentation.ui.Form;
import com.idega.presentation.ui.HiddenInput;
import com.idega.presentation.ui.SubmitButton;
import com.idega.presentation.ui.TextArea;
import com.idega.presentation.ui.TextInput;
import com.idega.presentation.util.Edit;
/**
* Title:
* Description:
* Copyright: Copyright (c) 2001
* Company:
* @author
* @version 1.0
*/
public class ContractTextSetter extends com.idega.presentation.PresentationObjectContainer {
private final static String IW_BUNDLE_IDENTIFIER = "com.idega.block.contract";
protected IWResourceBundle iwrb;
protected IWBundle iwb;
private String localesParameter = "iw_locales";
private String bottomThickness = "8";
private boolean isAdmin;
public final static String prmCategoryId = "con_cat";
public ContractTextSetter() {
}
public String getBundleIdentifier() {
return IW_BUNDLE_IDENTIFIER;
}
protected void control(IWContext iwc)throws Exception {
this.iwb = getBundle(iwc);
this.iwrb = getResourceBundle(iwc);
int iCategoryId = -1;
if (this.isAdmin) {
if (iwc.isParameterSet(prmCategoryId)) {
iCategoryId = Integer.parseInt(iwc.getParameter(prmCategoryId));
}
//add(getPDFLink(iwb.getImage("print.gif")));
if (iwc.getParameter("savetitle") != null) {
updateTitleForm(iwc, iCategoryId);
add(getMainTable(iCategoryId));
}
else if (iwc.getParameter("savetext") != null) {
updateForm(iwc, iCategoryId);
add(getMainTable(iCategoryId));
}
else if (iwc.getParameter("delete") != null) {
add(ConfirmDelete(iwc));
}
else if (iwc.getParameter("conf_delete") != null) {
deleteText(iwc);
add(getMainTable(iCategoryId));
}
else if (iwc.getParameter("text_id") != null || iwc.getParameter("new_text") != null) {
add(getSetupForm(iwc, iCategoryId));
}
else if (iwc.getParameter("new_title") != null) {
add(getTitleForm(iwc, iCategoryId));
}
else if (iwc.getParameter("title_id") != null) {
add(getTitleForm(iwc, iCategoryId));
}
else {
add(getMainTable(iCategoryId));
}
}
else {
add(this.iwrb.getLocalizedString("access_denied", "Access_denied"));
}
}
private PresentationObject getMainTable(int iCategoryId) {
Table T = new Table();
T.setCellpadding(0);
T.setCellspacing(0);
T.setWidth("100%");
List L = ContractFinder.listOfContractTexts(iCategoryId);
String sTitle = getTitle(iCategoryId);
Link newTitleLink = new Link();
if (sTitle != null) {
newTitleLink.addParameter("title_id", iCategoryId);
}
else {
sTitle = this.iwrb.getLocalizedString("new_title", "New Title");
newTitleLink.addParameter("new_title", "new_title");
}
newTitleLink.setText(sTitle);
newTitleLink.addParameter(prmCategoryId, iCategoryId);
int row = 1;
T.add(getPDFLink(this.iwb.getImage("print.gif"), iCategoryId), 1, row);
T.add(getNewLink(iCategoryId), 2, row);
row++;
T.add(Edit.titleText(this.iwrb.getLocalizedString("header", "Header")), 1, row);
row++;
T.add(newTitleLink, 2, row);
row++;
T.add(Edit.titleText(this.iwrb.getLocalizedString("order", "Order")), 1, row);
T.add(Edit.titleText(this.iwrb.getLocalizedString("title", "Title")), 2, row);
row++;
if (L != null) {
int len = L.size();
ContractText CT;
for (int i = 0; i < len; i++) {
CT = (ContractText) L.get(i);
Link link = new Link(CT.getName());
link.addParameter("text_id", CT.getID());
link.addParameter(prmCategoryId, iCategoryId);
T.add(String.valueOf(CT.getOrdinal()), 1, row);
T.add(link, 2, row);
row++;
}
//T.setColumnAlignment(1,"right");
T.setHorizontalZebraColored(Edit.colorLightBlue, Edit.colorWhite);
T.setRowColor(1, Edit.colorWhite);
T.setRowColor(2, Edit.colorBlue);
T.setRowColor(4, Edit.colorBlue);
T.setRowColor(row, Edit.colorRed);
T.setWidth(1, "30");
T.mergeCells(1, 2, 2, 2);
T.mergeCells(1, row, 8, row);
T.add(Edit.formatText(" "), 1, row);
T.setHeight(row, this.bottomThickness);
}
else {
T.add(Edit.formatText(this.iwrb.getLocalizedString("no_texts", "No text in database")), 1, 2);
}
T.setAlignment(1, 2, "right");
return T;
}
private Form getTitleForm(IWContext iwc, int iCategoryId) {
Form F = new Form();
Table T = new Table();
int row = 1;
TextInput text = null;
String sId = iwc.getParameter("title_id");
ContractCategory Cat = ContractFinder.getContractCategory(Integer.parseInt(sId));
if (Cat != null) {
text = new TextInput("tname", Cat.getDescription());
HiddenInput HI = new HiddenInput("title_id", sId);
T.add(HI);
}
else {
text = new TextInput("tname");
}
SubmitButton save = new SubmitButton("savetitle", "Save");
text.setLength(80);
T.add(new HiddenInput(prmCategoryId, String.valueOf(iCategoryId)));
T.add(getUpLink(iCategoryId), 1, row++);
T.add(Edit.formatText(this.iwrb.getLocalizedString("text", "Text")), 1, row++);
T.add(text, 1, row++);
T.add(save, 1, row);
F.add(T);
return (F);
}
private Form getSetupForm(IWContext iwc, int iCategoryId) {
//Table Frame = new Table(2,1);
Table T = new Table();
T.add(getUpLink(iCategoryId), 1, 1);
T.add(getNewLink(iCategoryId), 1, 1);
int row = 2;
DropdownMenu intDrop = getIntegerDrop("ordinal", 1, 100);
TextInput name = null;
TextArea text = null;
CheckBox CB = new CheckBox("usetags", "true");
String sId = iwc.getParameter("text_id");
if (sId != null) {
ContractText CT = ContractFinder.getContractText(Integer.parseInt(sId));
if (CT != null) {
name = new TextInput("name", CT.getName());
text = getTextArea("texti", CT.getText());
CB.setChecked(CT.getUseTags());
intDrop.setSelectedElement(String.valueOf(CT.getOrdinal()));
HiddenInput HI = new HiddenInput("text_id", sId);
T.add(HI);
}
}
else {
name = new TextInput("name");
text = getTextArea("texti", "");
int max = ContractFinder.getContractTextMaxOrdinal() + 1;
intDrop.setSelectedElement(String.valueOf(max));
}
SubmitButton save = new SubmitButton("savetext", "Save");
SubmitButton delete = new SubmitButton("delete", "Delete");
DropdownMenu tagDrop = getTagDrop("tags", iCategoryId);
tagDrop.setOnChange("this.form.texti.value += this.options[this.selectedIndex].value;");
name.setLength(80);
T.add(Edit.formatText(this.iwrb.getLocalizedString("title", "Title")), 1, row++);
T.add(name, 1, row++);
T.add(Edit.formatText(this.iwrb.getLocalizedString("text", "Text")), 1, row++);
T.add(text, 1, row++);
Table bottomTable = new Table();
bottomTable.setWidth("100%");
bottomTable.add(intDrop, 1, 1);
bottomTable.add(CB, 2, 1);
bottomTable.add(save, 3, 1);
bottomTable.add(tagDrop, 4, 1);
bottomTable.add(delete, 5, 1);
T.add(bottomTable, 1, row);
T.add(new HiddenInput(prmCategoryId, String.valueOf(iCategoryId)));
Form myForm = new Form();
myForm.add(T);
return myForm;
}
private Form ConfirmDelete(IWContext iwc) {
String sTextId = iwc.getParameter("text_id");
Form F = new Form();
Table T = new Table(3, 2);
T.mergeCells(1, 1, 3, 1);
if (sTextId != null) {
T.add(new HiddenInput("text_id", sTextId));
}
SubmitButton del = new SubmitButton("conf_delete", this.iwrb.getLocalizedString("ok", "OK"));
BackButton back = new BackButton(this.iwrb.getLocalizedString("cancel", "Cancel"));
back.setHistoryMove(2);
T.add(Edit.formatText(this.iwrb.getLocalizedString("sure_to_delete", "Do really want to delete")), 1, 1);
T.add(del, 1, 2);
T.add(back, 3, 2);
F.add(T);
return F;
}
private void deleteText(IWContext iwc) {
String sTextId = iwc.getParameter("text_id");
if (sTextId != null) {
try {
int id = Integer.parseInt(sTextId);
ContractText CT = ((com.idega.block.contract.data.ContractTextHome) com.idega.data.IDOLookup.getHomeLegacy(ContractText.class)).findByPrimaryKeyLegacy(id);
CT.delete();
}
catch (SQLException ex) {
}
}
}
private void updateForm(IWContext iwc, int iCategoryId) {
String sTextId = iwc.getParameter("text_id");
String sOrdinal = iwc.getParameter("ordinal");
String sName = iwc.getParameter("name");
String sText = iwc.getParameter("texti");
String sUseTags = iwc.getParameter("usetags");
int id = sTextId != null ? Integer.parseInt(sTextId) : -1;
int iOrd = Integer.parseInt(sOrdinal);
boolean useTags = sUseTags != null;
sName = sName != null ? sName : "";
sText = sText != null ? sText : "";
ContractBusiness.saveContractText(id, iCategoryId, sName, sText, iOrd, useTags);
}
private void updateTitleForm(IWContext iwc, int iCategoryId) throws IDOLookupException{
String sCatId = iwc.getParameter("title_id");
String sText = iwc.getParameter("tname");
if (sCatId != null && sText != null) {
((ContractCategoryHome) IDOLookup.getHome(ContractCategory.class)).updateDescription(Integer.parseInt(sCatId),sText);
}
}
private String getTitle(int iCategoryId) {
return ContractFinder.getContractCategory(iCategoryId).getDescription();
}
private Link getUpLink(int iCategoryId) {
Link L = new Link(this.iwb.getImage("list.gif"));
L.addParameter(prmCategoryId, iCategoryId);
return L;
}
private Link getNewLink(int iCategoryId) {
Link newLink = new Link(this.iwb.getImage("new.gif"));
newLink.addParameter(prmCategoryId, iCategoryId);
newLink.addParameter("new_text", "new");
return newLink;
}
public Link getPDFLink(PresentationObject MO, int iCategoryId) {
Link L = new Link(MO);
L.setWindowToOpen(ContractFilerWindow.class);
L.addParameter(prmCategoryId, iCategoryId);
L.addParameter("test", "test");
return L;
}
private DropdownMenu getTagDrop(String name, int iCategoryId) {
List L = ContractFinder.listOfContractTagsInUse(iCategoryId);
DropdownMenu drp = new DropdownMenu(name);
drp.addMenuElementFirst("tag", this.iwrb.getLocalizedString("tags", "Tags"));
if (L != null) {
java.util.Iterator I = L.iterator();
while (I.hasNext()) {
ContractTag tag = (ContractTag) I.next();
drp.addMenuElement(" [" + tag.getName() + "]", tag.getName());
}
drp.addMenuElement(" [" + ContractWriter.contract_starts + "]", ContractWriter.contract_starts);
drp.addMenuElement(" [" + ContractWriter.contract_ends + "]", ContractWriter.contract_ends);
drp.addMenuElement(" [" + ContractWriter.today + "]", ContractWriter.today);
}
return drp;
}
private DropdownMenu getIntegerDrop(String name, int from, int to) {
DropdownMenu drp = new DropdownMenu(name);
for (int i = from; i <= to; i++) {
drp.addMenuElement(i, String.valueOf(i));
}
return drp;
}
private TextArea getTextArea(String name, String content) {
TextArea TA = new TextArea(name, content);
TA.setStyleClass(Edit.styleAttribute);
TA.setWidth(80);
TA.setHeight(20);
return TA;
}
public void main(IWContext iwc)throws Exception {
//isStaff = com.idega.core.accesscontrol.business.AccessControl
this.isAdmin = iwc.hasEditPermission(this);
control(iwc);
}
}