package com.idega.block.calendar.presentation; import java.io.IOException; import java.sql.SQLException; import java.util.Locale; import com.idega.idegaweb.block.presentation.Builderaware; import com.idega.block.calendar.business.CalendarBusiness; import com.idega.block.calendar.business.CalendarFinder; import com.idega.block.calendar.data.CalendarEntryType; import com.idega.block.media.presentation.ImageInserter; import com.idega.block.text.business.TextFinder; import com.idega.core.localisation.business.ICLocaleBusiness; import com.idega.core.localisation.presentation.ICLocalePresentation; import com.idega.idegaweb.IWBundle; import com.idega.idegaweb.IWResourceBundle; import com.idega.idegaweb.presentation.CalendarParameters; import com.idega.idegaweb.presentation.IWAdminWindow; import com.idega.presentation.IWContext; import com.idega.presentation.Image; import com.idega.presentation.Table; import com.idega.presentation.text.Link; import com.idega.presentation.ui.DropdownMenu; import com.idega.presentation.ui.HiddenInput; import com.idega.presentation.ui.SubmitButton; import com.idega.presentation.ui.TextInput; public class CalendarTypeEditor extends IWAdminWindow{ private final static String IW_BUNDLE_IDENTIFIER="com.idega.block.calendar"; private boolean _isAdmin = false; private boolean _save = false; private boolean _update = false; private int _typeID = -1; private IWBundle _iwb; private IWResourceBundle _iwrb; public CalendarTypeEditor(){ setWidth(380); setHeight(250); setUnMerged(); setMethod("get"); } public void main(IWContext iwc) throws Exception { /** * @todo permission */ this._isAdmin = true; //AccessControl.hasEditPermission(this,iwc); this._iwb = iwc.getIWMainApplication().getBundle(Builderaware.IW_CORE_BUNDLE_IDENTIFIER); this._iwrb = getResourceBundle(iwc); addTitle(this._iwrb.getLocalizedString("calendar_type_editor","Calendar Type Editor")); Locale currentLocale = iwc.getCurrentLocale(); Locale chosenLocale; String sLocaleId = iwc.getParameter(CalendarParameters.PARAMETER_LOCALE_DROP); int iLocaleId = -1; if(sLocaleId!= null){ iLocaleId = Integer.parseInt(sLocaleId); chosenLocale = ICLocaleBusiness.getLocaleReturnIcelandicLocaleIfNotFound(iLocaleId); } else{ chosenLocale = currentLocale; iLocaleId = ICLocaleBusiness.getLocaleId(chosenLocale); } if ( this._isAdmin ) { processForm(iwc, iLocaleId); } else { noAccess(); } } private void processForm(IWContext iwc, int iLocaleId) { if ( iwc.getParameter(CalendarParameters.PARAMETER_TYPE_ID) != null ) { try { this._typeID = Integer.parseInt(iwc.getParameter(CalendarParameters.PARAMETER_TYPE_ID)); } catch (NumberFormatException e) { this._typeID = -1; } } if ( iwc.getParameter(CalendarParameters.PARAMETER_MODE) != null ) { if ( iwc.getParameter(CalendarParameters.PARAMETER_MODE).equalsIgnoreCase(CalendarParameters.PARAMETER_MODE_CLOSE) ) { closeEditor(iwc); } else if ( iwc.getParameter(CalendarParameters.PARAMETER_MODE).equalsIgnoreCase(CalendarParameters.PARAMETER_MODE_SAVE) ) { saveType(iwc,iLocaleId); } } if ( this._typeID == -1 && iwc.getSessionAttribute(CalendarParameters.PARAMETER_TYPE_ID) != null ) { try { this._typeID = Integer.parseInt((String)iwc.getSessionAttribute(CalendarParameters.PARAMETER_TYPE_ID)); } catch (NumberFormatException e) { this._typeID = -1; } iwc.removeSessionAttribute(CalendarParameters.PARAMETER_TYPE_ID); } if ( this._typeID != -1 ) { if ( iwc.getParameter(CalendarParameters.PARAMETER_MODE_DELETE) != null ) { deleteType(iwc); } else { this._update = true; } } initializeFields(iLocaleId); } private void initializeFields(int iLocaleID) { CalendarEntryType type = null; if ( this._update ) { type = CalendarFinder.getInstance().getEntryType(this._typeID); } String[] locStrings = null; if ( type != null ) { locStrings = TextFinder.getLocalizedString(type,iLocaleID); } DropdownMenu localeDrop = ICLocalePresentation.getLocaleDropdownIdKeyed(CalendarParameters.PARAMETER_LOCALE_DROP); localeDrop.setToSubmit(); localeDrop.setSelectedElement(Integer.toString(iLocaleID)); addLeft(this._iwrb.getLocalizedString("locale","Locale")+": ",localeDrop,false); Table typesTable = new Table(3,1); typesTable.setCellpadding(0); typesTable.setCellspacing(0); DropdownMenu entryTypes = CalendarBusiness.getEntryTypes(CalendarParameters.PARAMETER_TYPE_ID,iLocaleID); entryTypes.addMenuElementFirst("-1",""); entryTypes.setToSubmit(); entryTypes.setMarkupAttribute("style",STYLE); if ( this._typeID != -1 ) { entryTypes.setSelectedElement(Integer.toString(this._typeID)); } typesTable.add(entryTypes,1,1); typesTable.setWidth(2,1,"5"); Image newImage = this._iwb.getImage("shared/create.gif",this._iwrb.getLocalizedString("new_type","New type")); Link newLink = new Link(newImage); typesTable.add(newLink,3,1); Image deleteImage = this._iwb.getImage("shared/delete.gif",this._iwrb.getLocalizedString("delete_type","Delete type")); Link deleteLink = new Link(deleteImage); deleteLink.addParameter(CalendarParameters.PARAMETER_MODE_DELETE,CalendarParameters.PARAMETER_TRUE); deleteLink.addParameter(CalendarParameters.PARAMETER_TYPE_ID,this._typeID); typesTable.add(deleteLink,3,1); addLeft(this._iwrb.getLocalizedString("type","Type")+":",typesTable,true,false); TextInput nameInput = new TextInput(CalendarParameters.PARAMETER_ENTRY_HEADLINE); nameInput.setLength(24); if ( locStrings != null && locStrings[0] != null ) { nameInput.setContent(locStrings[0]); } addLeft(this._iwrb.getLocalizedString("name","Name")+":",nameInput,true); ImageInserter image = new ImageInserter(CalendarParameters.PARAMETER_FILE_ID); image.setHasUseBox(false); if ( type != null && type.getImageID() != -1 ) { image.setImageId(type.getImageID()); } addRight(this._iwrb.getLocalizedString("new_image","New image")+":",image,true,false); addHiddenInput(new HiddenInput(CalendarParameters.PARAMETER_TYPE_ID,Integer.toString(this._typeID))); addSubmitButton(new SubmitButton(this._iwrb.getLocalizedImageButton("close","CLOSE"),CalendarParameters.PARAMETER_MODE,CalendarParameters.PARAMETER_MODE_CLOSE)); addSubmitButton(new SubmitButton(this._iwrb.getLocalizedImageButton("save","SAVE"),CalendarParameters.PARAMETER_MODE,CalendarParameters.PARAMETER_MODE_SAVE)); } private void deleteType(IWContext iwc) { CalendarBusiness.deleteEntryType(this._typeID); this._typeID = -1; } private void saveType(IWContext iwc,int iLocaleID) { String typeHeadline = iwc.getParameter(CalendarParameters.PARAMETER_ENTRY_HEADLINE); String fileID = iwc.getParameter(CalendarParameters.PARAMETER_FILE_ID); int typeID = CalendarBusiness.saveEntryType(this._typeID,iLocaleID,typeHeadline,fileID); iwc.setSessionAttribute(CalendarParameters.PARAMETER_TYPE_ID,Integer.toString(typeID)); } private void closeEditor(IWContext iwc) { setParentToReload(); close(); } private void noAccess() throws IOException,SQLException { close(); } public String getBundleIdentifier(){ return IW_BUNDLE_IDENTIFIER; } }