wicket.contrib.tinymce.InPlaceEditBehavior.java Source code

Java tutorial

Introduction

Here is the source code for wicket.contrib.tinymce.InPlaceEditBehavior.java

Source

/**
This file is part of Wicket-Contrib-TinyMce. See
<http://http://wicketstuff.org/confluence/display/STUFFWIKI/wicket-contrib-tinymce>
    
Wicket-Contrib-TinyMce is free software: you can redistribute it and/
or modify it under the terms of the GNU Lesser General Public License
as published by the Free Software Foundation, either version 3 of the
License, or (at your option) any later version.
    
Wicket-Contrib-TinyMce is distributed in the hope that it will be
useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU Lesser General Public License for more details.
    
You should have received a copy of the GNU Lesser General Public
License along with Wicket-Contrib-TinyMce.  If not, see
<http://www.gnu.org/licenses/>.
 */
package wicket.contrib.tinymce;

import org.apache.wicket.Component;
import org.apache.wicket.behavior.Behavior;
import org.apache.wicket.markup.head.HeaderItem;
import org.apache.wicket.markup.head.OnEventHeaderItem;

import wicket.contrib.tinymce.settings.Button;
import wicket.contrib.tinymce.settings.TinyMCESettings;
import wicket.contrib.tinymce.settings.WicketSavePlugin;
import wicket.contrib.tinymce.settings.TinyMCESettings.Position;
import wicket.contrib.tinymce.settings.TinyMCESettings.Theme;
import wicket.contrib.tinymce.settings.TinyMCESettings.Toolbar;

/**
 * This behavior adds in-place editing functionality to wicket components. In
 * most cases you will want to use {@link InPlaceEditComponent} instead of this
 * class directly.
 */
public class InPlaceEditBehavior extends TinyMceBehavior {
    private static final long serialVersionUID = 1L;
    private final String componentMarkupId;

    /**
     * Construct in-place-editing behavior to a component. It makes the content
     * of the component editable with a TinyMce WYSIWYG editor.
     * @param settings 
     * @param inPlaceSaveBehavior 
     * 
     * @param settings
     *            TinyMceSettings for the editor when opened.
     * @param triggerComponent
     *            Component that will get an onclick event to make the component
     *            that this behavior is added to editable. Can be the editable
     *            component itself, but can also be another component, e.g. a
     *            button. If set to null, you will have to start the editable
     *            state via a call to the javascriptfunction with name:
     *            {@link #getStartEditorScriptName()}
     * @param savePlugin 
     */
    public InPlaceEditBehavior(TinyMCESettings settings, Component triggerComponent, WicketSavePlugin savePlugin) {
        super(settings);
        componentMarkupId = triggerComponent.getMarkupId();

        settings.add(savePlugin.getSaveButton(), Toolbar.first, Position.before);
        settings.add(savePlugin.getCancelButton(), Toolbar.first, Position.before);
        settings.add(Button.separator, Toolbar.first, Position.before);
    }

    @Override
    protected HeaderItem wrapTinyMceSettingsScript(String settingScript, Component component) {
        return new OnEventHeaderItem("'" + componentMarkupId + "'", "click", settingScript);
    }
}