package com.idega.block.image.presentation; /** * Title: ImageViewer * Description: * Copyright: Copyright (c) 2001 * Company: idega * @author Eirikur Hrafnsson, eiki@idega.is * @version 1.0 * */ import java.sql.SQLException; import java.util.List; import com.idega.block.image.business.ImageBusiness; import com.idega.block.image.business.ImageHandler; import com.idega.block.image.data.ImageEntity; import com.idega.core.file.data.ICFileCategory; import com.idega.presentation.Block; import com.idega.presentation.IWContext; import com.idega.presentation.Image; import com.idega.presentation.Page; import com.idega.presentation.Table; import com.idega.presentation.text.Link; import com.idega.presentation.text.Text; import com.idega.presentation.ui.CheckBox; import com.idega.presentation.ui.Form; import com.idega.presentation.ui.HiddenInput; import com.idega.presentation.ui.SubmitButton; import com.idega.presentation.ui.TextInput; import com.idega.util.text.TextSoap; public class ImageViewer extends Block{ private int categoryId = -1; private boolean limitNumberOfImages=true; private int numberOfDisplayedImages=9; private int iNumberInRow = 3; //iXXXX for int private int ifirst = 0; private int maxImageWidth = 100; private boolean limitImageWidth=true; private String callingModule = "image_id"; private boolean backbutton = false; private boolean refresh = false; private Table outerTable = new Table(2,3); private boolean isAdmin = false; private String outerTableWidth = "100%"; private String outerTableHeight = "100%"; private String headerFooterColor = "#8AA7D6"; private String textColor = "#FFFFFF"; private String headerText = ""; private Image footerBackgroundImage; private Image headerBackgroundImage; private ImageEntity[] entities; private String percent = "100"; private Link continueRefresh = new Link("Click here to continue..."); private String lastViewAction = ""; private Text textProxy = new Text(); private Image view; private Image delete; private Image use; private Image copy; private Image cut; private Image edit; private Image save; private Image cancel; private Image newImage; private Image newCategory; private Image text; private Image reload; private String language = "IS"; private int textSize = 1; private String attributeName = "union_id"; private int attributeId = 3; public ImageViewer(){ this.continueRefresh.addParameter("refresh","true"); } public ImageViewer(int categoryId){ this(); this.categoryId=categoryId; } public ImageViewer(ImageEntity[] entities){ this(); this.entities=entities; } public void setConnectionAttributes(String attributeName, int attributeId) { this.attributeName = attributeName; this.attributeId = attributeId; } public void setConnectionAttributes(String attributeName, String attributeId) { this.attributeName = attributeName; this.attributeId = Integer.parseInt(attributeId); } public void main(IWContext iwc)throws Exception{ this.isAdmin= iwc.hasEditPermission(this); /**@todo : add localisation support * */ ImageEntity[] image = new ImageEntity[1]; String imageId = iwc.getParameter("image_id"); String imageCategoryId = iwc.getParameter("image_catagory_id"); this.percent = iwc.getParameter("percent"); String sEdit = iwc.getParameter("edit"); String action = iwc.getParameter("action"); String refreshing = (String) iwc.getSessionAttribute("im_refresh"); String sessionImageId = (String) iwc.getSessionAttribute("im_image_id"); String imageSessionName = (String) iwc.getParameter("im_image_session_name"); if( imageSessionName!=null ) { this.callingModule = imageSessionName; } if( sessionImageId!=null ){// new uploaded image imageId = sessionImageId; iwc.removeSessionAttribute("im_image_id"); } if( refreshing!=null ) { this.refresh = true; } if( this.refresh ){ refresh(iwc); iwc.removeSessionAttribute("im_refresh"); } this.view = new Image("/pics/jmodules/image/"+this.language+"/view.gif","View all sizes"); this.delete = new Image("/pics/jmodules/image/"+this.language+"/delete.gif","Delete this image"); this.use = new Image("/pics/jmodules/image/"+this.language+"/use.gif","Use this image"); this.copy = new Image("/pics/jmodules/image/"+this.language+"/copy.gif","Copy this image"); this.cut = new Image("/pics/jmodules/image/"+this.language+"/cut.gif","Cut this image"); this.edit = new Image("/pics/jmodules/image/"+this.language+"/edit.gif","Edit this image"); this.text = new Image("/pics/jmodules/image/"+this.language+"/text.gif","Edit this image's text"); this.save = new Image("/pics/jmodules/image/"+this.language+"/save.gif","Save"); this.cancel = new Image("/pics/jmodules/image/"+this.language+"/cancel.gif","Cancel"); this.newImage = new Image("/pics/jmodules/image/"+this.language+"/newimage.gif","Upload a new image"); this.newCategory = new Image("/pics/jmodules/image/"+this.language+"/newcategory.gif","Edit categories"); this.reload = new Image("/pics/jmodules/image/"+this.language+"/refresh.gif","Refresh everything"); Link uploadLink = new Link(this.newImage); uploadLink.setWindowToOpen(EditWindow.class); uploadLink.addParameter("action","upload"); Link reloads = new Link(this.reload); reloads.addParameter("refresh","true"); reloads.addParameter("idega","best&"+iwc.getQueryString()); Link categories = new Link(this.newCategory); categories.addParameter("action","editcategories"); categories.addParameter("image_id","-1");//so it runs smoothly ; ) if(this.isAdmin && (sEdit==null) ) { this.outerTable.add(reloads,2,1); this.outerTable.add(uploadLink,2,1); this.outerTable.add(categories,2,1); } this.outerTable.setColor(1,1,this.headerFooterColor); this.outerTable.setColor(1,3,this.headerFooterColor); this.outerTable.setAlignment(1,1,"left"); this.outerTable.setAlignment(2,1,"right"); this.outerTable.setAlignment(1,2,"center"); this.outerTable.setAlignment(1,3,"center"); this.outerTable.setVerticalAlignment(1,2,"top"); this.outerTable.setVerticalAlignment(1,1,"top"); this.outerTable.mergeCells(1,2,2,2); this.outerTable.mergeCells(1,3,2,3); this.outerTable.setWidth(this.outerTableWidth); this.outerTable.setHeight(this.outerTableHeight); this.outerTable.setHeight(1,1,"23"); this.outerTable.setHeight(1,3,"23"); this.outerTable.setCellpadding(2); this.outerTable.setCellspacing(0); Table links = new Table(3,1); links.setWidth("100%"); links.setCellpadding(0); links.setCellspacing(0); links.setAlignment(1,1,"left"); links.setAlignment(2,1,"center"); links.setAlignment(3,1,"right"); if ( this.headerBackgroundImage != null ) { this.outerTable.setBackgroundImage(1,1,this.headerBackgroundImage); } if ( this.footerBackgroundImage != null ) { this.outerTable.setBackgroundImage(1,3,this.footerBackgroundImage); } if(sEdit!=null){ try{ getEditor(iwc); this.outerTable.setColor(1,2,"FFFFFF"); } catch(Throwable e){ e.printStackTrace(System.err); } } else{ if(imageId != null){ try{ if( action == null){ this.limitImageWidth = false; image[0] = ((com.idega.block.image.data.ImageEntityHome)com.idega.data.IDOLookup.getHomeLegacy(ImageEntity.class)).findByPrimaryKeyLegacy(Integer.parseInt(imageId)); Text imageName = new Text(image[0].getName()); imageName.setBold(); imageName.setFontColor(this.textColor); imageName.setFontSize(3); this.outerTable.add(imageName,1,1); this.outerTable.add(displayImage(image[0]),1,2); Text backtext = new Text("Bakka <<"); backtext.setBold(); Link backLink = new Link(backtext); backLink.setFontColor(this.textColor); backLink.setAsBackLink(); links.add(backLink,1,1); this.outerTable.add(links,1,3); } else{ //continueRefresh.addParameter("idega","best&"+iwc.getQueryString()); Text texti = new Text(""); ImageHandler handler = null; if( "delete".equalsIgnoreCase(action) ){ texti = new Text("Image deleted."); } else if( "save".equalsIgnoreCase(action) ){ texti = new Text("Image saved."); handler = (ImageHandler) iwc.getSessionAttribute("handler"); } else if( "savenew".equalsIgnoreCase(action) ){ texti = new Text("Image saved as a new image."); handler = (ImageHandler) iwc.getSessionAttribute("handler"); } else if( "use".equalsIgnoreCase(action) ){ iwc.setSessionAttribute(this.callingModule,imageId); //debug is this legal? check if opened from another page or not. close or not Page parent = getParentPage(); parent.close(); parent.setParentToReload(); } else if( "editcategories".equalsIgnoreCase(action) ){ this.outerTable.add(getCategoryEditForm(),1,2); Text flokkar = new Text("Myndaflokkar"); flokkar.setBold(); flokkar.setFontColor(this.textColor); flokkar.setFontSize(3); this.outerTable.add(flokkar,1,1); } else if( "savecategories".equalsIgnoreCase(action) ){ texti = new Text("Imagecategories saved."); ImageBusiness.storeEditForm(iwc); } if( !("use".equalsIgnoreCase(action)) ){ ImageBusiness.handleEvent(iwc,handler); texti.setBold(); texti.setFontColor("#FFFFFF"); texti.setFontSize(3); this.outerTable.add(texti,1,2); this.outerTable.add(Text.getBreak(),1,2); this.outerTable.add(Text.getBreak(),1,2); this.continueRefresh.setFontColor("#FFFFFF"); this.continueRefresh.setFontSize(3); if( !("editcategories".equalsIgnoreCase(action)) ) { this.outerTable.add(this.continueRefresh,1,2); } } } } catch(NumberFormatException e) { add(new Text("ImageId must be a number")); System.err.println("ImageViewer: ImageId must be a number"); } } else{ try{ if ( (imageCategoryId != null) || (this.entities!=null) ){ ImageEntity[] imageEntity; String sFirst = iwc.getParameter("iv_first");//browsing from this image if (sFirst!=null) { this.ifirst = Integer.parseInt(sFirst); } String previousCatagory = (String)iwc.getSessionAttribute("image_previous_catagory_id"); if ( imageCategoryId != null){ if( (previousCatagory!=null) && (!previousCatagory.equalsIgnoreCase(imageCategoryId)) ){ iwc.getSession().removeAttribute("image_previous_catagory_id"); } ImageEntity[] inApplication = (ImageEntity[]) iwc.getServletContext().getAttribute("image_entities_"+imageCategoryId); iwc.setSessionAttribute("image_previous_catagory_id",imageCategoryId); this.categoryId = Integer.parseInt(imageCategoryId); ICFileCategory category = ((com.idega.core.file.data.ICFileCategoryHome)com.idega.data.IDOLookup.getHomeLegacy(ICFileCategory.class)).findByPrimaryKeyLegacy(this.categoryId); if ( inApplication == null ){ imageEntity = (ImageEntity[]) category.findRelated(((com.idega.block.image.data.ImageEntityHome)com.idega.data.IDOLookup.getHomeLegacy(ImageEntity.class)).createLegacy()); } else { imageEntity = inApplication; } if( imageEntity!=null ){ iwc.getServletContext().removeAttribute("image_entities_"+imageCategoryId); iwc.getServletContext().setAttribute("image_entities_"+imageCategoryId,imageEntity); } Text categoryName = new Text(category.getName()); categoryName.setBold(); categoryName.setFontColor(this.textColor); categoryName.setFontSize(3); this.outerTable.add(categoryName,1,1); if( this.limitNumberOfImages ) { int too = (this.ifirst+this.numberOfDisplayedImages); if( this.numberOfDisplayedImages >= imageEntity.length){ too = imageEntity.length; this.numberOfDisplayedImages = too; } Text leftText = new Text("Fyrri myndir <<"); leftText.setBold(); Link back = new Link(leftText); back.setFontColor(this.textColor); int iback = this.ifirst-this.numberOfDisplayedImages; if( iback<0 ) { this.ifirst = 0; } back.addParameter("iv_first",this.ifirst); back.addParameter("image_catagory_id",category.getID()); String middle = (this.ifirst+1)+" til "+too+" af "+(imageEntity.length); Text middleText = new Text(middle); middleText.setBold(); middleText.setFontColor(this.textColor); Text rightText = new Text(">> N�stu myndir"); rightText.setBold(); Link forward = new Link(rightText); forward.setFontColor(this.textColor); int inext = this.ifirst+this.numberOfDisplayedImages; if( inext > (imageEntity.length-1)) { inext = (imageEntity.length-1)-this.numberOfDisplayedImages; } forward.addParameter("iv_first",inext); forward.addParameter("image_catagory_id",category.getID()); links.add(back,1,1); links.add(middleText,2,1); links.add(forward,3,1); } } else{ //for searches Text header = new Text(this.headerText); header.setBold(); header.setFontColor(this.textColor); header.setFontSize(3); this.outerTable.add(header,1,1); this.limitNumberOfImages=false; imageEntity=this.entities; } this.outerTable.add(links,1,3); this.outerTable.add(displayCatagory(imageEntity),1,2); } } catch(NumberFormatException e) { add(new Text("CategoryId must be a number")); System.err.println("ImageViewer: CategoryId must be a number"); } } } add(this.outerTable); } private Table displayImage( ImageEntity image ) throws SQLException { int imageId = ((Integer)image.getPrimaryKey()).intValue(); Table imageTable = new Table(1,2); imageTable.setAlignment(1,1,"center"); imageTable.setAlignment(1,2,"center"); imageTable.setCellpadding(0); Image theImage = new Image(imageId); theImage.setImageLinkZoomView(); if(this.limitImageWidth) { theImage.setMaxImageWidth(this.maxImageWidth); } imageTable.add(theImage); if(this.isAdmin) { //String adminPage="/image/imageadmin.jsp";//change to same page and object Table editTable = new Table(5,1); Link imageEdit = new Link(this.delete); imageEdit.addParameter("image_id",imageId); imageEdit.addParameter("action","delete"); Link imageEdit2 = new Link(this.cut); imageEdit2.addParameter("image_id",imageId); imageEdit2.addParameter("action","cut"); Link imageEdit3 = new Link(this.copy); imageEdit3.addParameter("image_id",imageId); imageEdit3.addParameter("action","copy"); Link imageEdit4 = new Link(this.view); imageEdit4.addParameter("image_id",imageId); Link imageEdit5 = new Link(this.use); imageEdit5.addParameter("image_id",imageId); imageEdit5.addParameter("action","use"); Link imageEdit6 = new Link(this.edit); imageEdit6.addParameter("image_id",imageId); imageEdit6.addParameter("edit","true"); Link imageEdit7 = new Link(this.text); imageEdit7.setWindowToOpen(EditWindow.class); imageEdit7.addParameter("image_id",imageId); imageEdit7.addParameter("action","text"); editTable.add(imageEdit,1,1); // debug eiki add later //editTable.add(imageEdit2,2,1); // editTable.add(imageEdit3,3,1); editTable.add(imageEdit4,4,1); editTable.add(imageEdit5,5,1); editTable.add(imageEdit6,2,1); editTable.add(imageEdit7,3,1); imageTable.add(editTable, 1, 2); } return imageTable; } private Table displayCatagory( ImageEntity[] imageEntity ) throws SQLException { int k = 0; this.limitImageWidth = true; if( this.limitNumberOfImages ) { k = this.numberOfDisplayedImages; } else { k = imageEntity.length; } int heigth = k/this.iNumberInRow; if( k%this.iNumberInRow!=0 ) { heigth++; } Table table = new Table(this.iNumberInRow,heigth); table.setWidth("100%"); try { if (this.ifirst < 0 ) { this.ifirst = (-1)*this.ifirst; } else if (this.ifirst > (imageEntity.length -1)) { this.ifirst = (imageEntity.length -1); } } catch (NumberFormatException n) { add(new Text("ImageViewer: sFirst must be a number")); System.err.println("ImageViewer: sFirst must be a number"); } int x=0; for (int i = this.ifirst ; (x<k) && ( i < imageEntity.length ) ; i++ ) { table.setVerticalAlignment((x%this.iNumberInRow)+1,(x/this.iNumberInRow)+1,"bottom"); table.setAlignment((x%this.iNumberInRow)+1,(x/this.iNumberInRow)+1,"center"); table.setWidth((x%this.iNumberInRow)+1,Integer.toString((int)(100/this.iNumberInRow))+"%"); table.add( displayImage(imageEntity[i]) ,(x%this.iNumberInRow)+1,(x/this.iNumberInRow)+1); x++; } return table; } /** ** return a proxy for the main text. Use the standard ** set methods on this object such as .setFontSize(1) etc. ** and it will set the property for all texts. */ public Text getTextProxy(){ return this.textProxy; } public void setTextProxy(Text textProxy){ this.textProxy = textProxy; } public Text setTextAttributes( Text realText ){ Text tempText = (Text) this.textProxy.clone(); tempText.setText( realText.getText() ); return tempText; } public void setNumberOfDisplayedImages(int numberOfDisplayedImages){ this.limitNumberOfImages = true; if( numberOfDisplayedImages<0 ) { numberOfDisplayedImages = (-1)*numberOfDisplayedImages; } this.numberOfDisplayedImages = numberOfDisplayedImages; } public void setNumberInRow(int NumberOfImagesInOneRow){ this.iNumberInRow = NumberOfImagesInOneRow; } public void setHeaderText(String headerText){ this.headerText = headerText; } public void setHeaderFooterColor(String headerFooterColor){ this.headerFooterColor=headerFooterColor; } public void setHeaderBackgroundImage(Image headerBackgroundImage){ this.headerBackgroundImage=headerBackgroundImage; } public void setHeaderBackgroundImage(String headerBackgroundImageURL){ setHeaderBackgroundImage(new Image(headerBackgroundImageURL)); } public void setFooterBackgroundImage(Image footerBackgroundImage){ this.footerBackgroundImage=footerBackgroundImage; } public void setFooterBackgroundImage(String footerBackgroundImageURL){ setFooterBackgroundImage(new Image(footerBackgroundImageURL)); } public void setTextColor(String textColor){ this.textColor=textColor; } public void setMaxImageWidth(int maxImageWidth){ this.limitImageWidth=true; this.maxImageWidth = maxImageWidth; } public void limitImageWidth( boolean limitImageWidth ){ this.limitImageWidth=limitImageWidth; } public void setTableWidth(int width){ setTableWidth(Integer.toString(width)); } public void setTableWidth(String width){ this.outerTableWidth=width; } public void setTableHeight(int height){ setTableHeight(Integer.toString(height)); } public void setTableHeight(String height){ this.outerTableHeight=height; } public void setViewImage(String imageName){ this.view = new Image(imageName); } public void setDeleteImage(String imageName){ this.delete = new Image(imageName); } public void setUseImage(String imageName){ this.use = new Image(imageName); } public void setCopyImage(String imageName){ this.copy = new Image(imageName); } public void setCutImage(String imageName){ this.cut = new Image(imageName); } //debug add sets for other images public void refresh(){ this.refresh = true; } private void refresh(IWContext iwc) throws SQLException{ iwc.removeSessionAttribute("image_previous_catagory_id"); /**@todo : use business object to get categories and folders * */ ICFileCategory[] catagories = (ICFileCategory[])(((com.idega.core.file.data.ICFileCategoryHome)com.idega.data.IDOLookup.getHomeLegacy(ICFileCategory.class)).createLegacy()).findAll(); if (catagories != null) { if (catagories.length > 0 ) { for (int i = 0 ; i < catagories.length ; i++ ) { iwc.getIWMainApplication().removeAttribute("image_entities_"+catagories[i].getID()); } } } } private Table getImageInfoTable(){ Table table = new Table(); table.setColor(""); return table; } private Form getEditorForm(ImageHandler handler, String ImageId, IWContext iwc) throws Exception{ Table toolbarBelow = new Table(4,2); Table toolbarRight = new Table(2,5); Table imageTable = new Table(2,2); Form form = new Form(); form.setMethod("GET"); Link gray = new Link(new Image("/pics/jmodules/image/buttons/grayscale.gif","Convert the image to grayscale")); setAction(gray,"grayscale"); toolbarBelow.add(gray,1,1); Link emboss = new Link(new Image("/pics/jmodules/image/buttons/emboss.gif","Emboss the image")); setAction(emboss,"emboss"); toolbarBelow.add(emboss,1,1); Link sharpen = new Link(new Image("/pics/jmodules/image/buttons/sharpen.gif","Sharpen the image")); setAction(sharpen,"sharpen"); toolbarBelow.add(sharpen,1,1); Link invert = new Link(new Image("/pics/jmodules/image/buttons/invert.gif","Invert the image")); setAction(invert,"invert"); toolbarBelow.add(invert,1,1); Text widthtext = new Text("Width:"+Text.getBreak()); widthtext.setFontSize(1); toolbarBelow.add(widthtext,1,2); //debug TextInput widthInput = new TextInput("width",""+handler.getModifiedWidth()); widthInput.setSize(5); toolbarBelow.add(widthInput,1,2); Text heighttext = new Text("Height:"+Text.getBreak()); heighttext.setFontSize(1); toolbarBelow.add(heighttext,2,2); //debug TextInput heightInput = new TextInput("height",""+handler.getModifiedHeight()); heightInput.setSize(5); toolbarBelow.add(heightInput,2,2); Text con = new Text(Text.getBreak()+"Constrain?"); con.setFontSize(1); toolbarBelow.add(con,3,2); CheckBox constrained = new CheckBox("constraint","true"); constrained.setChecked(true); toolbarBelow.add(constrained,3,2); toolbarBelow.add(new SubmitButton(new Image("/pics/jmodules/image/buttons/scale.gif"),"scale","true"),4,2); toolbarBelow.add(new HiddenInput("edit","true"),4,2); Link undo = new Link(new Image("/pics/jmodules/image/buttons/undo.gif","Undo the last changes")); setAction(undo,"undo"); toolbarBelow.add(undo,3,1); Link save = new Link(new Image("/pics/jmodules/image/buttons/save.gif","Save the image")); save.addParameter("action","save"); save.addParameter("image_id",ImageId); toolbarBelow.add(save,4,1); Link savenew = new Link(new Image("/pics/jmodules/image/buttons/savenew.gif","Save as a new image")); savenew.addParameter("action","savenew"); savenew.addParameter("image_id",ImageId); toolbarBelow.add(savenew,4,1); Link brightness = new Link(new Image("/pics/jmodules/image/buttons/brightness.gif","Adjust the brightness of the image")); setAction(brightness,"brightness"); toolbarRight.add(brightness,1,1); Link contrast = new Link(new Image("/pics/jmodules/image/buttons/contrast.gif","Adjust the contrast of the image")); setAction(contrast,"contrast"); toolbarRight.add(contrast,1,2); Link color = new Link(new Image("/pics/jmodules/image/buttons/color.gif","Adjust the color of the image")); setAction(color,"color"); toolbarRight.add(color,1,3); Link quality = new Link(new Image("/pics/jmodules/image/buttons/quality.gif","Adjust the quality of the image")); setAction(quality,"quality"); toolbarRight.add(quality,1,4); Link revert = new Link(new Image("/pics/jmodules/image/buttons/revert.gif","Revert to the last saved version of the image")); setAction(revert,"revert"); toolbarRight.add(revert,2,1); Link rotate = new Link(new Image("/pics/jmodules/image/buttons/rotate.gif","Rotate the image CCW/CW")); setAction(rotate,"rotate"); toolbarRight.add(rotate,2,2); Link horizontal = new Link(new Image("/pics/jmodules/image/buttons/horizontal.gif","Flip the image horizontally")); setAction(horizontal,"horizontal"); toolbarRight.add(horizontal,2,3); Link vertical = new Link(new Image("/pics/jmodules/image/buttons/vertical.gif","Flip the image vertically")); setAction(vertical,"vertical"); toolbarRight.add(vertical,2,4); //debug make a better table! Table innerTable = new Table(2,1); innerTable.setWidth("100%"); innerTable.setWidth(1,"130"); innerTable.setAlignment(1,1,"left"); innerTable.setAlignment(2,1,"center"); innerTable.add(toolbarRight,1,1); imageTable.add(innerTable,1,1); imageTable.add(toolbarBelow,1,2); imageTable.mergeCells(1,2,2,2); imageTable.setWidth("100%"); imageTable.setHeight("100%"); imageTable.setAlignment(1,2,"center"); imageTable.setVerticalAlignment(1,1,"top"); imageTable.setVerticalAlignment(2,1,"middle"); if( handler != null) { Image myndin = handler.getModifiedImageAsImageObject(iwc); String percent2 = iwc.getParameter("percent"); if (percent2!=null) { this.percent = TextSoap.findAndReplace(percent2,"%",""); } int iPercent = 100; if(this.percent==null) { this.percent = "100"; } try{ iPercent = Integer.parseInt(this.percent); } catch (NumberFormatException n) { iPercent = 100; this.percent = "100"; } myndin.setWidth( (Integer.parseInt(myndin.getWidth())* iPercent)/100 ); myndin.setHeight( (Integer.parseInt(myndin.getHeight())* iPercent)/100 ); innerTable.add( myndin ,2,1); Text percentText = new Text(Text.getBreak()+"Percent:"+Text.getBreak()); percentText.setFontSize(1); imageTable.add(percentText,1,1); TextInput percentInput = new TextInput("percent",this.percent+"%"); percentInput.setSize(4); imageTable.add(percentInput,1,1); } toolbarBelow.mergeCells(1,1,2,1); toolbarBelow.setAlignment(1,1,"center"); toolbarBelow.setAlignment(1,2,"left"); toolbarBelow.setAlignment(2,2,"left"); toolbarBelow.setAlignment(3,2,"left"); toolbarBelow.setAlignment(4,2,"left"); toolbarBelow.setAlignment(3,1,"right"); toolbarBelow.setAlignment(4,1,"right"); form.add(imageTable); return form; } private void setAction(Link theLink, String action){ theLink.addParameter("action",action); theLink.addParameter("edit","true"); theLink.addParameter("percent",this.percent); } private Form getCategoryEditForm(){ Form frameForm = new Form(); frameForm.add(new HiddenInput("image_id","-1")); frameForm.add(new HiddenInput("action","savecategories")); Table frameTable = new Table(1,2); frameTable.setCellpadding(0); frameTable.setCellspacing(0); List catagories = ImageBusiness.getImageCategories(); int catagorieslength = (catagories != null) ? catagories.size() : 0; Table contentTable = new Table(3,catagorieslength+2); contentTable.setCellpadding(0); contentTable.setCellspacing(0); int textInputLenth = 20; String catagoriTextInputName = "catagory"; String deleteTextInputName = "delete"; for (int i = 0; i < catagorieslength; i++) { TextInput catagoryInput = new TextInput(catagoriTextInputName,((ICFileCategory)catagories.get(i)).getName()); catagoryInput.setLength(textInputLenth); contentTable.add(catagoryInput,1,i+2); contentTable.add(new HiddenInput("ids",Integer.toString(((ICFileCategory)catagories.get(i)).getID())),1,i+2); contentTable.setHeight(i+1,"30"); contentTable.add(new CheckBox(deleteTextInputName, Integer.toString(((ICFileCategory)catagories.get(i)).getID())),3,i+2); } Text catagoryText = new Text("Flokkur"); catagoryText.setBold(); catagoryText.setFontColor("#FFFFFF"); Text deleteText = new Text("Ey�a"); deleteText.setBold(); deleteText.setFontColor("#FFFFFF"); contentTable.add(catagoryText,1,1); contentTable.add(deleteText,3,1); TextInput catagoryInput = new TextInput(catagoriTextInputName); catagoryInput.setLength(textInputLenth); contentTable.add(catagoryInput,1,catagorieslength+2); frameTable.add(contentTable,1,1); //Buttons Table buttonTable = new Table(3,1); buttonTable.setHeight(40); buttonTable.setCellpadding(0); buttonTable.setCellspacing(0); buttonTable.setWidth(2,1,"80"); buttonTable.setWidth(3,1,"60"); buttonTable.setAlignment(2,1,"left"); buttonTable.setAlignment(3,1,"right"); buttonTable.setVerticalAlignment(2,1,"bottom"); buttonTable.setVerticalAlignment(3,1,"bottom"); SubmitButton savebutton = new SubmitButton(this.save); //Link cancelLink = new Link(cancel); //buttonTable.add(cancelLink,2,1); buttonTable.add(savebutton,3,1); frameTable.add(buttonTable,1,2); frameTable.setAlignment(1,2,"right"); //Buttons ends frameForm.add(frameTable); return frameForm; } private void getEditor(IWContext iwc) throws Exception{ String ImageId = iwc.getParameter("image_id"); String imageInSession = (String) iwc.getSessionAttribute("image_in_session"); ImageHandler handler = (ImageHandler) iwc.getSessionAttribute("handler"); if (imageInSession!=null){ if (ImageId != null) { if( !ImageId.equalsIgnoreCase(imageInSession) ){ iwc.setSessionAttribute("image_in_session",ImageId); handler = new ImageHandler(Integer.parseInt(ImageId)); iwc.setSessionAttribute("handler",handler); } ImageBusiness.handleEvent(iwc,handler); this.outerTable.add(getEditorForm(handler,ImageId,iwc),1,2); } else { ImageId = imageInSession; ImageBusiness.handleEvent(iwc,handler); this.outerTable.add(getEditorForm(handler,ImageId,iwc),1,2); } } else{ if( ImageId!=null ) { iwc.setSessionAttribute("image_in_session",ImageId); handler = new ImageHandler(Integer.parseInt(ImageId)); iwc.setSessionAttribute("handler",handler); ImageBusiness.handleEvent(iwc,handler); this.outerTable.add(getEditorForm(handler,ImageId,iwc),1,2); } } } }