List of usage examples for org.apache.wicket Component getMarkupId
public String getMarkupId()
From source file:com.servoy.j2db.server.headlessclient.DesignModeBehavior.java
License:Open Source License
/** * @see org.apache.wicket.ajax.AbstractDefaultAjaxBehavior#respond(org.apache.wicket.ajax.AjaxRequestTarget) *///from ww w . j av a 2 s .c o m @Override protected void respond(AjaxRequestTarget target) { Request request = RequestCycle.get().getRequest(); String action = request.getParameter(DraggableBehavior.PARAM_ACTION); String id = extractId(request.getParameter(DraggableBehavior.PARAM_DRAGGABLE_ID)); if (id != null) { final String finalId = id.endsWith(TemplateGenerator.WRAPPER_SUFFIX) ? id.substring(0, id.length() - 8) : id; MarkupContainer comp = (MarkupContainer) getComponent(); Component child = (Component) comp.visitChildren(Component.class, new IVisitor<Component>() { public Object component(Component component) { String markupId = component.getMarkupId(); if (finalId.equals(markupId)) return component; return IVisitor.CONTINUE_TRAVERSAL; } }); if (action != null) { int height = stripUnitPart(request.getParameter(PARAM_RESIZE_HEIGHT)); int width = stripUnitPart(request.getParameter(PARAM_RESIZE_WIDTH)); int x = stripUnitPart(request.getParameter(DraggableBehavior.PARAM_X)); int y = stripUnitPart(request.getParameter(DraggableBehavior.PARAM_Y)); if (action.equals(ACTION_SELECT)) { if (!(child instanceof IComponent)) onSelectComponents.clear(); else { boolean isSelectionRemove = false; if (!Boolean.parseBoolean(request.getParameter(PARAM_IS_CTRL_KEY))) onSelectComponents.clear(); else { isSelectionRemove = onSelectComponents.remove(child) != null; } IComponent[] param = onSelectComponents.keySet() .toArray(new IComponent[isSelectionRemove ? onSelectComponents.size() : onSelectComponents.size() + 1]); if (!isSelectionRemove) param[onSelectComponents.size()] = (IComponent) child; Object ret = callback .executeOnSelect(getJSEvent(EventType.action, 0, new Point(x, y), param)); if (ret instanceof Boolean && !((Boolean) ret).booleanValue()) { onSelectComponents.clear(); } else { if (!isSelectionRemove) onSelectComponents.put((IComponent) child, id); StringBuilder idsArray = new StringBuilder("new Array("); Iterator<String> idsIte = onSelectComponents.values().iterator(); while (idsIte.hasNext()) { idsArray.append('\'').append(idsIte.next()).append('\''); if (idsIte.hasNext()) idsArray.append(','); } idsArray.append(')'); target.appendJavascript( "Servoy.ClientDesign.attachElements(" + idsArray.toString() + ");"); } if (Boolean.parseBoolean(request.getParameter(PARAM_IS_RIGHTCLICK))) { callback.executeOnRightClick( getJSEvent(EventType.rightClick, 0, new Point(x, y), param)); } else if (Boolean.parseBoolean(request.getParameter(PARAM_IS_DBLCLICK))) { callback.executeOnDblClick( getJSEvent(EventType.doubleClick, 0, new Point(x, y), param)); } } WebEventExecutor.generateResponse(target, getComponent().getPage()); target.appendJavascript("Servoy.ClientDesign.clearClickTimer();"); return; } if (child instanceof IComponent) { if (!onSelectComponents.containsKey(child)) { onSelectComponents.put((IComponent) child, id); } if (action.equals(ACTION_RESIZE)) { if (width != -1 && height != -1) { if (child instanceof ISupportWebBounds) { Insets paddingAndBorder = ((ISupportWebBounds) child).getPaddingAndBorder(); if (paddingAndBorder != null) { height += paddingAndBorder.bottom + paddingAndBorder.top; width += paddingAndBorder.left + paddingAndBorder.right; } } if (child instanceof IScriptableProvider) { ((IRuntimeComponent) ((IScriptableProvider) child).getScriptObject()).setSize(width, height); ((IRuntimeComponent) ((IScriptableProvider) child).getScriptObject()).setLocation(x, y); } if (child instanceof IProviderStylePropertyChanges) ((IProviderStylePropertyChanges) child).getStylePropertyChanges().setRendered(); } callback.executeOnResize(getJSEvent(EventType.onDrop, 0, new Point(x, y), new IComponent[] { (IComponent) child })); } else if (action.equals(DraggableBehavior.ACTION_DRAG_START)) { Object onDragAllowed = callback.executeOnDrag(getJSEvent(EventType.onDrag, 0, new Point(x, y), onSelectComponents.keySet().toArray(new IComponent[onSelectComponents.size()]))); if ((onDragAllowed instanceof Boolean && !((Boolean) onDragAllowed).booleanValue()) || (onDragAllowed instanceof Number && ((Number) onDragAllowed).intValue() == DRAGNDROP.NONE)) { onDragComponent = null; } else { onDragComponent = (IComponent) child; } WebEventExecutor.generateResponse(target, getComponent().getPage()); return; } else { if (child == onDragComponent) { if (x != -1 && y != -1) { ((IRuntimeComponent) ((IScriptableProvider) child).getScriptObject()).setLocation(x, y); if (child instanceof IProviderStylePropertyChanges) { // test if it is wrapped if ((child).getParent() instanceof WrapperContainer) { // call for the changes on the wrapper container so that it will copy the right values over WrapperContainer wrapper = (WrapperContainer) (child).getParent(); wrapper.getStylePropertyChanges().getChanges(); wrapper.getStylePropertyChanges().setRendered(); } ((IProviderStylePropertyChanges) child).getStylePropertyChanges().setRendered(); } } callback.executeOnDrop( getJSEvent(EventType.onDrop, 0, new Point(x, y), onSelectComponents.keySet() .toArray(new IComponent[onSelectComponents.size()]))); } if (Boolean.parseBoolean(request.getParameter(PARAM_IS_DBLCLICK))) { callback.executeOnDblClick(getJSEvent(EventType.doubleClick, 0, new Point(x, y), new IComponent[] { (IComponent) child })); } } } } } WebEventExecutor.generateResponse(target, getComponent().getPage()); target.appendJavascript("Servoy.ClientDesign.reattach();"); }
From source file:com.servoy.j2db.server.headlessclient.dnd.DraggableBehavior.java
License:Open Source License
/** * Get the child component with the specified id. * /* ww w. j av a2s.c om*/ * @param childId id of child component * * @return the child component or null if not found */ public IComponent getBindedComponentChild(final String childId) { IComponent bindedComponentChild = null; Component bindedComponent = getComponent(); if (bindedComponent instanceof MarkupContainer) { bindedComponentChild = (IComponent) ((MarkupContainer) bindedComponent).visitChildren(IComponent.class, new IVisitor<Component>() { public Object component(Component component) { if (component.getMarkupId().equals(childId)) { return component; } return IVisitor.CONTINUE_TRAVERSAL; } }); } return bindedComponentChild; }
From source file:com.servoy.j2db.server.headlessclient.FormAnchorInfo.java
License:Open Source License
public static String generateAnchoringParams(SortedSet<FormAnchorInfo> formAnchorInfos, Component component) { Iterator<FormAnchorInfo> it = formAnchorInfos.iterator(); FormAnchorInfo fai;/*ww w . j a v a 2s. c om*/ String webId = component.getMarkupId(); while (it.hasNext()) { fai = it.next(); if (fai.parts != null) { for (FormPartAnchorInfo p : fai.parts.values()) { if (p.elementAnchorInfo != null && p.elementAnchorInfo.containsKey(webId)) { // found it StringBuffer sb = new StringBuffer(); p.appendElementAnchoringCode(webId, p.elementAnchorInfo.get(webId), sb); return sb.toString(); } } } } return null; }
From source file:com.servoy.j2db.server.headlessclient.MainPage.java
License:Open Source License
/** * Respond to focus/blur events.//from ww w. ja v a 2 s .co m */ @SuppressWarnings("nls") public void respond(AjaxRequestTarget target, final String event, final String markupId) { Component component = (Component) visitChildren(IComponent.class, new IVisitor<Component>() { public Object component(Component c) { Component targetComponent = c; if (c instanceof WebBaseSelectBox && ("blur".equals(event) || "focus".equals(event))) { Component[] cs = ((WebBaseSelectBox) c).getFocusChildren(); if (cs != null && cs.length == 1) targetComponent = cs[0]; } if (targetComponent.getMarkupId().equals(markupId)) { return c; } return IVisitor.CONTINUE_TRAVERSAL; } }); if (component == null) { Debug.log("Component not found markupId " + markupId); //$NON-NLS-1$ return; } IFormUIInternal<?> formui = component.findParent(IFormUIInternal.class); if (formui != null && formui.isDesignMode()) { Debug.log("Event ignored because of design mode"); //$NON-NLS-1$ return; } if (component instanceof IFieldComponent) { WebEventExecutor eventExecutor = (WebEventExecutor) ((IFieldComponent) component).getEventExecutor(); if (eventExecutor != null) { if ("focus".equals(event)) { int webModifier = Utils.getAsInteger( RequestCycle.get().getRequest().getParameter(IEventExecutor.MODIFIERS_PARAMETER)); StartEditOnFocusGainedEventBehavior.startEditing(component, WebEventExecutor.convertModifiers(webModifier), target); eventExecutor.onEvent(JSEvent.EventType.focusGained, target, component, webModifier); } else if ("blur".equals(event)) { // test if the data is really posted by looking up the key. if (component instanceof FormComponent<?> && RequestCycle.get().getRequest().getParameter("nopostdata") == null) { // changed data is posted ((FormComponent<?>) component).processInput(); } eventExecutor.onEvent(JSEvent.EventType.focusLost, target, component, IEventExecutor.MODIFIERS_UNSPECIFIED); } else { Debug.trace("Ignored event " + event); } } else { Debug.trace("Ignored event, no eventExecutor"); } } else { // other non-field components like WebLabel ServoyForm form = component.findParent(ServoyForm.class); if (form != null) { Page page = form.getPage(); // JS might change the page this form belongs to... so remember it now int webModifier = Utils.getAsInteger( RequestCycle.get().getRequest().getParameter(IEventExecutor.MODIFIERS_PARAMETER)); WebEventExecutor.setSelectedIndex(component, target, WebEventExecutor.convertModifiers(webModifier), true); WebEventExecutor.generateResponse(target, page); } } }
From source file:com.servoy.j2db.server.headlessclient.PageContributor.java
License:Open Source License
@Override public void renderHead(HtmlHeaderContainer container) { super.renderHead(container); IHeaderResponse response = container.getHeaderResponse(); String djs = getDynamicJavaScript(); if (djs != null) { response.renderOnLoadJavascript(djs); }// w ww . ja v a 2s . c om addReferences(response); Page page = findPage(); if (page instanceof MainPage) { Component focus = ((MainPage) page).getAndResetToFocusComponent(); if (focus != null) { if (focus instanceof WebDataHtmlArea) { response.renderOnLoadJavascript("tinyMCE.activeEditor.focus()"); } else { response.renderOnLoadJavascript( "setTimeout(\"requestFocus('" + focus.getMarkupId() + "');\",0);"); //$NON-NLS-1$ //$NON-NLS-2$ } } } if (formAnchorInfos != null && formAnchorInfos.size() != 0 && WebClientSession.get() != null && WebClientSession.get().getWebClient() != null && Utils.getAsBoolean( WebClientSession.get().getWebClient().getRuntimeProperties().get("enableAnchors"))) //$NON-NLS-1$ { if (anchorInfoChanged) { response.renderJavascriptReference(anchorlayout); response.renderOnLoadJavascript("setTimeout(\"layoutEntirePage();\", 10);"); // setTimeout is important here, to let the browser apply CSS styles during Ajax calls //$NON-NLS-1$ String sb = FormAnchorInfo.generateAnchoringFunctions(formAnchorInfos, getOrientation()); response.renderJavascript(sb, null); anchorInfoChanged = false; } else if (componentsThatNeedAnchorRelayout != null && componentsThatNeedAnchorRelayout.length() > 0) { response.renderJavascriptReference(anchorlayout); response.renderOnLoadJavascript("setTimeout(\"layoutSpecificElements();\", 10);"); response.renderJavascript("executeLayoutSpecificElements = function()\n{\n" + componentsThatNeedAnchorRelayout.append("\n}"), null); } } if (componentsThatNeedAnchorRelayout != null) componentsThatNeedAnchorRelayout.setLength(0); if (tabIndexChanges.size() > 0) { StringBuffer stringBuffer = new StringBuffer(); stringBuffer.append("Servoy.TabCycleHandling.setNewTabIndexes(["); //$NON-NLS-1$ for (String componentID : tabIndexChanges.keySet()) { stringBuffer.append("['");//$NON-NLS-1$ stringBuffer.append(componentID); stringBuffer.append("',");//$NON-NLS-1$ stringBuffer.append(tabIndexChanges.get(componentID)); stringBuffer.append("]");//$NON-NLS-1$ stringBuffer.append(",");//$NON-NLS-1$ } stringBuffer.deleteCharAt(stringBuffer.length() - 1); stringBuffer.append("]);"); //$NON-NLS-1$ response.renderOnLoadJavascript(stringBuffer.toString()); tabIndexChanges.clear(); } if (splitPanesToUpdateDivider.size() > 0) { for (WebSplitPane splitPane : splitPanesToUpdateDivider) { if (splitPane.findParent(Page.class) != null && !splitPane.getScriptObject().getChangesRecorder().isChanged() && !splitPane.isParentContainerChanged()) { response.renderOnLoadJavascript((new StringBuilder("(function() {") //$NON-NLS-1$ .append(splitPane.getDividerLocationJSSetter(true).append("}).call();"))).toString()); //$NON-NLS-1$ } } splitPanesToUpdateDivider.clear(); } // Enable this for Firebug debugging under IE/Safari/etc. //response.renderJavascriptReference("http://getfirebug.com/releases/lite/1.2/firebug-lite-compressed.js"); //$NON-NLS-1$ }
From source file:com.servoy.j2db.server.headlessclient.TabIndexHelper.java
License:Open Source License
private static void setUpTabIndexAttributeModifierInternal(Component comp, int newTabIndex) { TabIndexAttributeModifier modifier = null; final Component component = comp; for (Object obeh : component.getBehaviors()) { IBehavior beh = (IBehavior) obeh; if (beh instanceof TabIndexAttributeModifier) { modifier = (TabIndexAttributeModifier) beh; break; }/*from www .j a v a 2s. c o m*/ } boolean componentChanged = true; boolean changeForClientSide = false; if (modifier == null) { if (newTabIndex != ISupportWebTabSeq.DEFAULT && isTabIndexSupported(component)) component.add(new TabIndexAttributeModifier(newTabIndex)); } else if (newTabIndex != ISupportWebTabSeq.DEFAULT) { if (newTabIndex != modifier.getTabIndex()) { modifier.setTabIndex(newTabIndex); if (!(component instanceof IProviderStylePropertyChanges) || !((IProviderStylePropertyChanges) component).getStylePropertyChanges().isChanged()) { // if is already changed leave it to server side changeForClientSide = true; } } else { componentChanged = false; } } else { component.remove(modifier); } if (componentChanged) { MainPage page = component.findParent(MainPage.class); if (changeForClientSide) { if (page != null) { page.getPageContributor().addTabIndexChange(component.getMarkupId(), newTabIndex); } else { changeForClientSide = false; } } if (!changeForClientSide && component instanceof IProviderStylePropertyChanges) { IProviderStylePropertyChanges changeable = (IProviderStylePropertyChanges) component; changeable.getStylePropertyChanges().setChanged(); if (page != null) { page.getPageContributor().addTabIndexChange(component.getMarkupId(), ISupportWebTabSeq.DEFAULT); } } } }
From source file:com.servoy.j2db.server.headlessclient.WebForm.java
License:Open Source License
@SuppressWarnings("unchecked") public FormAnchorInfo getFormAnchorInfo() { formAnchorInfo = new FormAnchorInfo(formController.getName(), formController.getForm().getSize(), formController.getForm().getUUID()); final Map<String, ISupportAnchors> elements = new HashMap<String, ISupportAnchors>(); Iterator<IPersist> e1 = formController.getForm().getAllObjects(); while (e1.hasNext()) { IPersist obj = e1.next();/*from ww w .j a va2 s.co m*/ if (obj instanceof ISupportAnchors && obj instanceof ISupportBounds) { elements.put(ComponentFactory.getWebID(formController.getForm(), obj), (ISupportAnchors) obj); } } // In case we are in table view. if (view instanceof WebCellBasedView) { WebCellBasedView formPart = (WebCellBasedView) view; formAnchorInfo.addPart(Part.getDisplayName(Part.BODY), formPart.getMarkupId(), 50); formAnchorInfo.isTableView = true; formAnchorInfo.bodyContainerId = formPart.getMarkupId(); } // Find the id of the form navigator, if any. visitChildren(Component.class, new IVisitor() { public Object component(Component component) { if (component instanceof WebDefaultRecordNavigator) { formAnchorInfo.navigatorWebId = component.getMarkupId(); return IVisitor.CONTINUE_TRAVERSAL; } else if (component instanceof WebTabPanel) { return IVisitor.CONTINUE_TRAVERSAL_BUT_DONT_GO_DEEPER; } else return IVisitor.CONTINUE_TRAVERSAL; } }); visitChildren(WebDataRenderer.class, new IVisitor() { public Object component(Component component) { WebDataRenderer formPart = (WebDataRenderer) component; final FormPartAnchorInfo part = formAnchorInfo.addPart(formPart.getFormPartName(), formPart.getMarkupId(), formPart.getSize().height); if (Part.getDisplayName(Part.BODY).equals(formPart.getFormPartName())) { Component parent = formPart.getParent(); formAnchorInfo.bodyContainerId = parent.getMarkupId(); } formPart.visitChildren(ISupportWebBounds.class, new IVisitor() { public Object component(Component comp) { String id = comp.getId(); ISupportAnchors obj = elements.get(id); if (obj != null) { int anchors = obj.getAnchors(); if (((anchors > 0 && anchors != IAnchorConstants.DEFAULT)) || (comp instanceof WebTabPanel) || (comp instanceof IButton)) { Rectangle r = ((ISupportWebBounds) comp).getWebBounds(); if (r != null) { if (anchors == 0) anchors = IAnchorConstants.DEFAULT; int hAlign = -1; int vAlign = -1; if (obj instanceof ISupportTextSetup) { ISupportTextSetup alignedObj = (ISupportTextSetup) obj; hAlign = alignedObj.getHorizontalAlignment(); vAlign = alignedObj.getVerticalAlignment(); } String imageDisplayURL = null; boolean isRandomParamRemoved = false; if (comp instanceof IImageDisplay) { Object[] aImageDisplayURL = WebBaseButton .getImageDisplayURL((IImageDisplay) comp, false); imageDisplayURL = (String) aImageDisplayURL[0]; isRandomParamRemoved = ((Boolean) aImageDisplayURL[1]).booleanValue(); } part.addAnchoredElement(comp.getMarkupId(), anchors, r, hAlign, vAlign, comp.getClass(), imageDisplayURL, isRandomParamRemoved); } } } return IVisitor.CONTINUE_TRAVERSAL; } }); return IVisitor.CONTINUE_TRAVERSAL_BUT_DONT_GO_DEEPER; } }); return formAnchorInfo; }
From source file:com.servoy.j2db.server.headlessclient.WebForm.java
License:Open Source License
@SuppressWarnings("nls") @Override//from ww w . ja va2 s . co m public void renderHead(HtmlHeaderContainer headercontainer) { super.renderHead(headercontainer); Response response = headercontainer.getHeaderResponse().getResponse(); response.write("<link rel=\"stylesheet\" type=\"text/css\" href=\""); StringBuilder sb = new StringBuilder(); sb.append(UrlUtils.rewriteToContextRelative("servoy-webclient/formcss/", RequestCycle.get().getRequest())); sb.append(formController.getForm().getSolution().getName()); sb.append("/"); sb.append(formController.getName()); sb.append("_t"); long prevLMT = lastModifiedTime; if (lastModifiedTime == 0 || isUIRecreated()) { lastModifiedTime = System.currentTimeMillis(); } sb.append(Long.toString(lastModifiedTime)); sb.append("t.css"); response.write(RequestCycle.get().getOriginalResponse().encodeURL(sb)); response.write("\" id=\"formcss_"); response.write(formController.getName()); response.write(Long.toString(lastModifiedTime)); response.write("\""); getResponse().println(" />"); if (isUIRecreated()) { if (this.getParent() instanceof WebTabPanel) { String tabPanelId = this.getParent().getMarkupId(); String showWebFormjs = "$('#" + getMarkupId() + "').css('visibility','" + (isVisible() ? "inherit" : "hidden") + "');"; //show WebForm after rearrangeTabsInTabPanel() is done String jsCall = "rearrageTabsInTabPanel('" + tabPanelId + "');" + showWebFormjs; headercontainer.getHeaderResponse().renderOnLoadJavascript(jsCall); } StringBuffer cssRef = new StringBuffer(); cssRef.append("Servoy.Utils.removeFormCssLink('formcss_"); cssRef.append(formController.getName()); cssRef.append(prevLMT); cssRef.append("');"); headercontainer.getHeaderResponse().renderJavascript(cssRef, null); } if (isFormInWindow()) { List<Component> componentz = getTabSeqComponents(); int max = -1; int min = Integer.MAX_VALUE; String maxTabIndexElemId = null; String minTabIndexElemId = null; for (Component c : componentz) { int tabIndex = TabIndexHelper.getTabIndex(c); if (tabIndex > max) { max = tabIndex; maxTabIndexElemId = c.getMarkupId(); } if (tabIndex != -1 && tabIndex < min) { min = tabIndex; minTabIndexElemId = c.getMarkupId(); } } if (minTabIndexElemId != null && maxTabIndexElemId != null) { headercontainer.getHeaderResponse() .renderOnLoadJavascript("Servoy.TabCycleHandling.registerListeners('" + minTabIndexElemId + "','" + maxTabIndexElemId + "');"); } } if (isFormInFormPopup()) { TreeMap<String, String> tm = new TreeMap<String, String>(); for (Component c : getTabSeqComponents()) { tm.put(String.valueOf(TabIndexHelper.getTabIndex(c)), c.getMarkupId()); } StringBuffer stringBuffer = new StringBuffer(); stringBuffer.append("Servoy.TabCycleHandling.forceTabbingSequence(["); for (Map.Entry<String, String> entry : tm.entrySet()) { stringBuffer.append("'" + entry.getValue() + "',"); } stringBuffer.deleteCharAt(stringBuffer.length() - 1); stringBuffer.append("]);"); headercontainer.getHeaderResponse().renderOnLoadJavascript(stringBuffer.toString()); } }
From source file:com.socialsite.BasePanel.java
License:Open Source License
/** * fires a event with the collection of all the updated dom elements after * the wicket ajax response. To subscribe the event call the * <code>SocialSite.Ajax.registerPostAjax</code>. Your callback function * will be called with a jQuery Wrapped set of all the update dom as the * first argument./*from w w w .j a va2s.c om*/ * * NOTE: call this only once after all the components are added to the * target * * * @param target * ajax target */ public void firePostAjaxUpdateEvent(final AjaxRequestTarget target) { final StringBuffer script = new StringBuffer(" SocialSite.Ajax.handle(["); for (final Component component : target.getComponents()) { script.append("\"" + component.getMarkupId() + "\","); } script.append("])"); target.getHeaderResponse().renderOnDomReadyJavascript(script.toString()); }
From source file:com.tysanclan.site.projectewok.pages.member.CalendarPage.java
License:Open Source License
/** * //from w w w . j a va 2 s. c o m */ public CalendarPage() { super("Calendar"); add(new OtterSniperPanel("otterSniperPanel", 2)); WebMarkupContainer container = new WebMarkupContainer("container"); container.setOutputMarkupId(true); Date currTime = DateUtil.getMidnightCalendarInstance().getTime(); InlineDatePicker calendar = new InlineDatePicker("calendar", currTime) { /** * */ private static final long serialVersionUID = 1L; @Override protected void onDateSelected(Date date, AjaxRequestTarget target) { TimeZone tz = DateUtil.NEW_YORK; if (getUser().getTimezone() != null) { tz = TimeZone.getTimeZone(getUser().getTimezone()); } Calendar cal = Calendar.getInstance(tz); cal.setTime(date); Component oldEventView = getEventViewComponent(); Component oldTitle = getTitleComponent(); ListView<Event> eventView = createListView(cal.getTime()); getContainer().setVisible(!eventView.getModelObject().isEmpty()); Label newTitle = new Label("title", "Events for " + new SimpleDateFormat("EEEE d MMMM yyyy", Locale.US).format(date)); oldEventView.replaceWith(eventView); oldTitle.replaceWith(newTitle); Component component = get("schedule:description").setVisible(true); if (target != null) { target.appendJavaScript( "tinyMCE.execCommand('mceRemoveControl', false, '" + component.getMarkupId() + "')"); target.add(getContainer()); target.appendJavaScript( "tinyMCE.execCommand('mceAddControl', false, '" + component.getMarkupId() + "')"); } } }; container.add(calendar); add(container); ListView<Event> eventView = createListView(currTime); container.add(eventView); container.setVisible(!eventView.getModelObject().isEmpty()); container.add(new Label("title", "Events for " + new SimpleDateFormat("EEEE d MMMM yyyy", Locale.US).format(currTime))); Form<Event> scheduleEventForm = new Form<Event>("schedule") { private static final long serialVersionUID = 1L; @SpringBean private EventService eventService; @SuppressWarnings("unchecked") @Override protected void onSubmit() { TextField<String> titleComponent = (TextField<String>) get("title"); TextArea<String> descriptionComponent = (TextArea<String>) get("description"); DatePickerPanel dateComponent = (DatePickerPanel) get("dateselect"); DropDownChoice<Integer> hourComponent = (DropDownChoice<Integer>) get("hourselect"); DropDownChoice<Integer> minuteComponent = (DropDownChoice<Integer>) get("minuteselect"); String title = titleComponent.getModelObject(); String description = descriptionComponent.getModelObject(); Date selectedDate = dateComponent.getSelectedDate(); if (selectedDate == null) { error("No date selected"); return; } TimeZone tz = DateUtil.NEW_YORK; if (getUser().getTimezone() != null) { tz = TimeZone.getTimeZone(getUser().getTimezone()); } Calendar cal = Calendar.getInstance(tz); cal.setTime(DateUtil.getMidnightDate(selectedDate)); cal.add(Calendar.DAY_OF_MONTH, 1); cal.add(Calendar.HOUR_OF_DAY, hourComponent.getModelObject()); cal.add(Calendar.MINUTE, minuteComponent.getModelObject()); Event event = eventService.scheduleEvent(getUser(), cal.getTime(), title, description); if (event != null) { setResponsePage(new CalendarPage()); } } }; scheduleEventForm.add(new TextField<String>("title", new Model<String>("")).setRequired(true)); TextArea<String> descriptionEditor = new BBCodeTextArea("description", ""); descriptionEditor.setRequired(true); scheduleEventForm.add(descriptionEditor); DatePickerPanel datePanel = new DatePickerPanel("dateselect"); scheduleEventForm.add(datePanel); scheduleEventForm.add(new DropDownChoice<Integer>("hourselect", new Model<Integer>(0), DateUtil.getHours(), DateUtil.getTwoDigitRenderer()).setNullValid(false).setRequired(true)); scheduleEventForm.add(new DropDownChoice<Integer>("minuteselect", new Model<Integer>(0), DateUtil.getMinutes(), DateUtil.getTwoDigitRenderer()).setNullValid(false).setRequired(true)); TimeZone tz = DateUtil.NEW_YORK; if (getUser().getTimezone() != null) { tz = TimeZone.getTimeZone(getUser().getTimezone()); } scheduleEventForm.add(new Label("timezone", tz.getDisplayName(false, TimeZone.LONG, Locale.US))); add(scheduleEventForm); }