rendered paste body/** * */package com.ibg.dexter.plugin.node.tilepage.admin;import org.apache.wicket.Component;import org.apache.wicket.markup.html.form.Button;import org.apache.wicket.markup.html.form.CheckBox;import org.apache.wicket.markup.html.form.Form;import org.apache.wicket.markup.html.form.TextArea;import org.apache.wicket.markup.html.form.TextField;import org.apache.wicket.model.PropertyModel;import com.ibg.codepress.CodePressEnabler;import com.ibg.dexter.Path;import com.ibg.dexter.jcr.api.JcrNode;import com.ibg.dexter.jcr.model.NodeModel;import com.ibg.dexter.plugin.node.tilepage.TileContainerNode;import com.ibg.dexter.web.ContainerFeedbackPanel;import com.ibg.dexter.web.admin.NodeManagerPanel;import com.ibg.dexter.web.util.validators.NodePathValidator;import com.ibg.tinymce.TinyMceEnabler;class PropertiesPanel extends NodeManagerPanel { private boolean codeEditorEnabled = true; private boolean wysiwygEditorEnabled = false; public PropertiesPanel(String id, final NodeModel nodeModel) { super(id, nodeModel); Form form = new Form("form"); add(form); TileContainerNode tileContainer = getTileContainer(); this.requiresSSL = tileContainer.isRequiresSSL(); this.title = tileContainer.getTitle(); this.template = getTileTemplateFromContainer(tileContainer); this.content = tileContainer.getDataAsString(); form.add(new TextField("title", new PropertyModel(this, "title"))); form.add(new TextField("template", new PropertyModel(this, "template")).add(new NodePathValidator(nodeModel))); form.add(new CheckBox("requiresSSL", new PropertyModel(this, "requiresSSL"))); TextArea content = new TextArea("content", new PropertyModel(this, "content")); form.add(content); content.add(new CodePressEnabler("html", true) { @Override public boolean isEnabled(Component component) { return codeEditorEnabled; } }); content.add(new TinyMceEnabler() { @Override public boolean isEnabled(Component component) { return wysiwygEditorEnabled; } }); form.add(new ContainerFeedbackPanel("feedback", this)); form.add(new DisableEditorsButton("disable-editors")); form.add(new EnableCodeEditorButton("enable-code-editor")); form.add(new EnableWysiwygEditorButton("enable-wysiwig-editor")); form.add(new Button("save") { @Override public void onSubmit() { JcrNode node = nodeModel.getObject(); node.checkout(); TileContainerNode tileContainer = getTileContainer(); tileContainer.setRequiresSSL(requiresSSL); tileContainer.setTitle(title != null ? title : ""); tileContainer.setData(PropertiesPanel.this.content != null ? PropertiesPanel.this.content : ""); setTileTemplateToContainer(template, tileContainer); node.save(); node.checkin(); } }); } private TileContainerNode getTileContainer() { return TileContainerNode.forNode(getNode()); } private boolean requiresSSL; private String title; private String template; private String getTileTemplateFromContainer(TileContainerNode container) { JcrNode node = container.getTemplate(); return node != null ? node.getPath() : null; } private void setTileTemplateToContainer(String template, TileContainerNode container) { if (template == null) { container.setTemplate(null); } else { Path p = new Path((String)template); if (p.isAbsolute() == false) { p = new Path(container.getNode().getPath()).parent().append(p); } JcrNode node = (JcrNode) container.getNode().getSession().getItem(p.toString()); container.setTemplate(node); } } private String content; private class EnableCodeEditorButton extends Button { public EnableCodeEditorButton(String id) { super(id); setDefaultFormProcessing(false); } @Override public void onSubmit() { codeEditorEnabled = true; wysiwygEditorEnabled = false; } @Override public boolean isEnabled() { return codeEditorEnabled == false; } } private class EnableWysiwygEditorButton extends Button { public EnableWysiwygEditorButton(String id) { super(id); setDefaultFormProcessing(false); } @Override public void onSubmit() { codeEditorEnabled = false; wysiwygEditorEnabled = true; } @Override public boolean isEnabled() { return wysiwygEditorEnabled == false; } } private class DisableEditorsButton extends Button { public DisableEditorsButton(String id) { super(id); setDefaultFormProcessing(false); } @Override public void onSubmit() { codeEditorEnabled = false; wysiwygEditorEnabled = false; } @Override public boolean isEnabled() { return wysiwygEditorEnabled == true || codeEditorEnabled == true; } }}