package is.idega.idegaweb.golf.block.image.presentation; import is.idega.idegaweb.golf.block.image.data.ImageCatagory; import is.idega.idegaweb.golf.block.image.data.ImageEntity; import java.sql.SQLException; import java.util.StringTokenizer; import com.idega.data.IDOLookup; import com.idega.presentation.Block; import com.idega.presentation.IWContext; import com.idega.presentation.Image; import com.idega.presentation.Table; import com.idega.presentation.text.Text; 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.TextInput; public class ImageBrowser extends Block{ private String width="100%"; private String treeWidth = "170"; private boolean showAll = false; private boolean refresh = false; private ImageTree tree = new ImageTree(); private ImageViewer viewer = new ImageViewer(); public String getWidth(){ return this.width; } public void setWidth(String width){ this.width = width; } public void setTreeWidth(String width){ this.treeWidth = width; } public void setShowAll(boolean showAll){ this.showAll = showAll; } public void refresh(){ this.refresh=true; } public ImageViewer getImageViewer(){ return this.viewer; } public ImageTree getImageTree(){ return this.tree; } public void main(IWContext modinfo)throws Exception{ String mode = modinfo.getParameter("mode"); String edit = modinfo.getParameter("edit");//so it doesn't conflict with imageviewer String action = modinfo.getParameter("action");//so it doesn't conflict with imageviewer String refreshing = (String) modinfo.getSessionAttribute("refresh"); if( refreshing!=null ) refresh = true; if ( refresh ) { tree.refresh(); viewer.refresh(); modinfo.removeSessionAttribute("refresh"); } if ( mode == null ) { mode = "image"; } Form categoryForm = new Form(); categoryForm.add(new HiddenInput("mode","search")); Table myTable = new Table(1,3); myTable.setWidth(getWidth()); myTable.setHeight("100%"); myTable.setCellpadding(0); myTable.setCellspacing(0); myTable.setColor("#336699"); myTable.setVerticalAlignment(1,1,"top"); myTable.setVerticalAlignment(1,2,"top"); myTable.setHeight(3,"100%"); Table tileTable = new Table(1,1); tileTable.setCellpadding(0); tileTable.setCellspacing(0); tileTable.setHeight(23); tileTable.setWidth("100%"); tileTable.setBackgroundImage(1,1,new Image("/pics/jmodules/image/myndamodule/footer/foottiler.gif")); Table imageTable = new Table(3,2); imageTable.setCellpadding(0); imageTable.setCellspacing(0); imageTable.mergeCells(1,2,2,2); imageTable.mergeCells(3,1,3,2); imageTable.setHeight("100%"); imageTable.setWidth("100%"); imageTable.setWidth(1,1,"150"); imageTable.setWidth(2,1,"10"); imageTable.setHeight(1,1,"100%"); imageTable.setHeight(1,2,"23"); imageTable.setVerticalAlignment(1,1,"top"); imageTable.setVerticalAlignment(1,2,"bottom"); imageTable.setVerticalAlignment(3,1,"top"); imageTable.add(tileTable,1,2); tree.setWidth(treeWidth); tree.setShowAll(showAll); if ( mode.equalsIgnoreCase("image") || (edit!=null) || (action!=null) ) { viewer.limitImageWidth(true); viewer.setNumberOfDisplayedImages(9); viewer.setHeaderFooterColor("#336699"); viewer.setFooterBackgroundImage("/pics/jmodules/image/myndamodule/footer/foottiler.gif"); imageTable.add(viewer,3,1); //debug because of refresh problem could solve with an invisible businenss class that is added first if( (!"delete".equalsIgnoreCase(action)) && (!"save".equalsIgnoreCase(action)) && (!"savenew".equalsIgnoreCase(action)) && (!"savecategories".equalsIgnoreCase(action)) ){ imageTable.add(tree,1,1); } } else if( mode.equalsIgnoreCase("search") ){ imageTable.add(getSearchResults(modinfo),3,1); imageTable.add(tree,1,1); } myTable.add(getToolbar(),1,1); myTable.addText("",1,2); myTable.setHeight(2,"5"); myTable.add(imageTable,1,3); categoryForm.add(myTable); add( categoryForm ); } private Table getToolbar() throws SQLException { Table myTable = new Table(10,1); myTable.setCellpadding(0); myTable.setCellspacing(0); myTable.setWidth("100%"); myTable.setWidth(1,"100%"); myTable.setHeight(25); myTable.setBackgroundImage(new Image("/pics/jmodules/image/myndamodule/topp/topptiler.gif")); Form categoryForm = new Form(); categoryForm.setMethod("get"); ImageCatagory[] category = (ImageCatagory[]) ((ImageCatagory)IDOLookup.instanciateEntity(ImageCatagory.class)).findAll(); Image searchImage = new Image("/pics/jmodules/image/myndamodule/topp/topp2.gif"); Image searchWord = new Image("/pics/jmodules/image/myndamodule/topp/topp3.gif"); DropdownMenu categoryMenu = new DropdownMenu(category,"catagory_id"); categoryMenu.addMenuElement(0,"Allir myndaflokkar"); categoryMenu.setSelectedElement("0"); categoryMenu.keepStatusOnAction(); categoryMenu.setStyleAttribute("font-size: 7pt"); TextInput searchText = new TextInput("searchString"); searchText.setStyleAttribute("font-size: 7pt"); searchText.setLength(40); searchText.keepStatusOnAction(); Text spacer = new Text("   "); SubmitButton submit = new SubmitButton(new Image("/pics/jmodules/image/myndamodule/topp/toppleita.gif")); myTable.add(searchImage,1,1); myTable.add(spacer,2,1); myTable.add(categoryMenu,3,1); myTable.add(spacer,4,1); myTable.add(searchWord,5,1); myTable.add(spacer,6,1); myTable.add(searchText,7,1); myTable.add(spacer,8,1); myTable.add(submit,9,1); myTable.add(spacer,10,1); return myTable; } private Table getSearchResults(IWContext modinfo) throws SQLException { boolean isQuery = true; boolean allCategories = false; String category_id = modinfo.getParameter("catagory_id"); if ( category_id.equalsIgnoreCase("0") ) { allCategories = true; } String searchString = modinfo.getParameter("searchString"); if ( searchString == null || searchString.equalsIgnoreCase("") ) { searchString = ""; isQuery = false; } String queryString = "select * from image,image_image_catagory where image.image_id=image_image_catagory.image_id and image_image_catagory.image_catagory_id="+category_id+" and "; if ( allCategories ) { queryString = "select * from image where "; } StringTokenizer tokens = new StringTokenizer(searchString); while ( tokens.hasMoreTokens() ) { String token = tokens.nextToken(); queryString += "(image_text like '%"+token+"%' or image_name like'%"+token+"%' or image_link like'%"+token+"%')"; if ( tokens.hasMoreTokens() ) { queryString += " and "; } } //add(queryString); Table myTable = new Table(1,1); myTable.setCellpadding(0); myTable.setCellspacing(0); myTable.setWidth("100%"); myTable.setHeight("100%"); myTable.setVerticalAlignment(1,1,"top"); if ( isQuery ) { ImageEntity[] image; if ( allCategories ) { image = (ImageEntity[]) ((ImageEntity)IDOLookup.instanciateEntity(ImageEntity.class)).findAll(queryString); } else { image = (ImageEntity[]) ((ImageEntity)IDOLookup.instanciateEntity(ImageEntity.class)).findAll(queryString); } if ( image.length > 0 ) { ImageViewer imageViewer = new ImageViewer(image); imageViewer.setHeaderFooterColor("#336699"); imageViewer.setFooterBackgroundImage("/pics/jmodules/image/myndamodule/footer/foottiler.gif"); imageViewer.setHeaderText("Fann "+image.length+" myndir sem uppfylltu leitarskilyr�i�: <u>"+searchString+"</u>"); myTable.add(imageViewer); } else { Text noQuery = new Text("Ekkert fannst..."); noQuery.setFontColor("#FFFFFF"); myTable.add(noQuery,1,1); } } else { Text noQuery = new Text("Engin leitarskilyr�i valin..."); noQuery.setFontColor("#FFFFFF"); myTable.add(noQuery,1,1); } return myTable; } }