You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by el...@apache.org on 2015/03/31 11:56:36 UTC

svn commit: r1670296 [2/2] - in /directory/studio/trunk/plugins/combinededitor: ./ resources/ resources/icons/ src/ src/main/ src/main/java/ src/main/java/org/ src/main/java/org/apache/ src/main/java/org/apache/directory/ src/main/java/org/apache/direc...

Added: directory/studio/trunk/plugins/combinededitor/src/main/java/org/apache/directory/studio/combinededitor/editor/LdifEditorPage.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/plugins/combinededitor/src/main/java/org/apache/directory/studio/combinededitor/editor/LdifEditorPage.java?rev=1670296&view=auto
==============================================================================
--- directory/studio/trunk/plugins/combinededitor/src/main/java/org/apache/directory/studio/combinededitor/editor/LdifEditorPage.java (added)
+++ directory/studio/trunk/plugins/combinededitor/src/main/java/org/apache/directory/studio/combinededitor/editor/LdifEditorPage.java Tue Mar 31 09:56:35 2015
@@ -0,0 +1,291 @@
+package org.apache.directory.studio.combinededitor.editor;
+
+
+import org.apache.directory.api.ldap.model.exception.LdapInvalidDnException;
+import org.apache.directory.studio.entryeditors.EntryEditorInput;
+import org.apache.directory.studio.ldapbrowser.common.widgets.WidgetModifyEvent;
+import org.apache.directory.studio.ldapbrowser.common.widgets.WidgetModifyListener;
+import org.apache.directory.studio.ldapbrowser.core.model.IBrowserConnection;
+import org.apache.directory.studio.ldapbrowser.core.model.IEntry;
+import org.apache.directory.studio.ldapbrowser.core.model.impl.DummyEntry;
+import org.apache.directory.studio.ldapbrowser.core.utils.CompoundModification;
+import org.apache.directory.studio.ldapbrowser.core.utils.ModelConverter;
+import org.apache.directory.studio.ldapbrowser.core.utils.Utils;
+import org.apache.directory.studio.ldifeditor.LdifEditorActivator;
+import org.apache.directory.studio.ldifeditor.LdifEditorConstants;
+import org.apache.directory.studio.ldifeditor.widgets.LdifEditorWidget;
+import org.apache.directory.studio.ldifparser.model.LdifFile;
+import org.apache.directory.studio.ldifparser.model.container.LdifContainer;
+import org.apache.directory.studio.ldifparser.model.container.LdifContentRecord;
+import org.apache.directory.studio.ldifparser.model.container.LdifInvalidContainer;
+import org.apache.directory.studio.ldifparser.model.container.LdifRecord;
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.action.MenuManager;
+import org.eclipse.jface.action.Separator;
+import org.eclipse.jface.text.source.SourceViewer;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.CTabItem;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Menu;
+import org.eclipse.ui.IActionBars;
+import org.eclipse.ui.IEditorSite;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.actions.ActionFactory;
+
+import org.apache.directory.studio.combinededitor.actions.FetchOperationalAttributesAction;
+import org.apache.directory.studio.templateeditor.actions.EditorPagePropertiesAction;
+import org.apache.directory.studio.templateeditor.actions.RefreshAction;
+import org.apache.directory.studio.templateeditor.actions.SimpleActionProxy;
+
+
+/**
+ * This class implements an editor page for the LDIF Editor.
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ */
+public class LdifEditorPage extends AbstractCombinedEntryEditorPage
+{
+    /** The LDIF editor widget */
+    private LdifEditorWidget ldifEditorWidget;
+
+    /** A count to know if the editor page has updated the shared working copy */
+    private int hasUpdatedSharedWorkingCopyCount = 0;
+
+    /** The modify listener for the widget */
+    private WidgetModifyListener listener = new WidgetModifyListener()
+    {
+        public void widgetModified( WidgetModifyEvent event )
+        {
+            updateSharedWorkingCopy();
+        }
+    };
+
+    /** The context menu */
+    private Menu contextMenu;
+
+
+    /**
+     * Creates a new instance of LdifEditorPage.
+     *
+     * @param editor
+     *      the associated editor
+     */
+    public LdifEditorPage( CombinedEntryEditor editor )
+    {
+        super( editor );
+
+        // Creating and assigning the tab item
+        CTabItem tabItem = new CTabItem( editor.getTabFolder(), SWT.NONE );
+        tabItem.setText( Messages.getString( "LdifEditorPage.LDIFEditor" ) ); //$NON-NLS-1$
+        tabItem.setImage( LdifEditorActivator.getDefault().getImage( LdifEditorConstants.IMG_BROWSER_LDIFEDITOR ) );
+        setTabItem( tabItem );
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public void init()
+    {
+        super.init();
+
+        ldifEditorWidget = new LdifEditorWidget( null, "", true ); //$NON-NLS-1$
+        ldifEditorWidget.createWidget( getEditor().getTabFolder() );
+
+        // Creating a new menu manager
+        Control sourceViewerControl = ldifEditorWidget.getSourceViewer().getControl();
+
+        MenuManager menuManager = new MenuManager();
+        contextMenu = menuManager.createContextMenu( sourceViewerControl );
+        sourceViewerControl.setMenu( contextMenu );
+
+        IEditorSite site = getEditor().getEditorSite();
+        IActionBars bars = site.getActionBars();
+
+        Action cutAction = new Action( "Cut" )
+        {
+            public void run()
+            {
+                ldifEditorWidget.getSourceViewer().doOperation( SourceViewer.CUT );
+            }
+        };
+
+        Action copyAction = new Action( "Copy" )
+        {
+            public void run()
+            {
+                ldifEditorWidget.getSourceViewer().doOperation( SourceViewer.COPY );
+            }
+        };
+
+        Action pasteAction = new Action( "Paste" )
+        {
+            public void run()
+            {
+                ldifEditorWidget.getSourceViewer().doOperation( SourceViewer.PASTE );
+            }
+        };
+
+        bars.setGlobalActionHandler( ActionFactory.CUT.getId(), cutAction );
+        bars.setGlobalActionHandler( ActionFactory.COPY.getId(), copyAction );
+        bars.setGlobalActionHandler( ActionFactory.PASTE.getId(), pasteAction );
+
+        // TODO remove this
+        menuManager.add( ActionFactory.CUT.create( PlatformUI.getWorkbench().getActiveWorkbenchWindow() ) );
+        menuManager.add( ActionFactory.COPY.create( PlatformUI.getWorkbench().getActiveWorkbenchWindow() ) );
+        menuManager.add( ActionFactory.PASTE.create( PlatformUI.getWorkbench().getActiveWorkbenchWindow() ) );
+
+        menuManager.add( new Separator() );
+        menuManager.add( new RefreshAction( getEditor() ) );
+        menuManager.add( new FetchOperationalAttributesAction( getEditor() ) );
+        menuManager.add( new Separator() );
+        menuManager.add( new SimpleActionProxy( new EditorPagePropertiesAction( getEditor() ) ) );
+
+        setInput();
+
+        getTabItem().setControl( ldifEditorWidget.getControl() );
+    }
+
+
+    /**
+     * Adds the listener.
+     */
+    private void addListener()
+    {
+        ldifEditorWidget.addWidgetModifyListener( listener );
+    }
+
+
+    /**
+     * Removes the listener.
+     */
+    private void removeListener()
+    {
+        ldifEditorWidget.removeWidgetModifyListener( listener );
+    }
+
+
+    /**
+     * Updates the shared working copy entry.
+     */
+    private void updateSharedWorkingCopy()
+    {
+        LdifFile ldifModel = ldifEditorWidget.getLdifModel();
+
+        // only continue if the LDIF model is valid
+        LdifRecord[] records = ldifModel.getRecords();
+        if ( records.length != 1 || !( records[0] instanceof LdifContentRecord ) || !records[0].isValid()
+            || !records[0].getDnLine().isValid() )
+        {
+            return;
+        }
+        for ( LdifContainer ldifContainer : ldifModel.getContainers() )
+        {
+            if ( ldifContainer instanceof LdifInvalidContainer )
+            {
+                return;
+            }
+        }
+
+        // update shared working copy
+        try
+        {
+            LdifContentRecord modifiedRecord = ( LdifContentRecord ) records[0];
+            EntryEditorInput input = getEditor().getEntryEditorInput();
+            IEntry sharedWorkingCopyEntry = input.getSharedWorkingCopy( getEditor() );
+
+            IBrowserConnection browserConnection = input.getSharedWorkingCopy( getEditor() ).getBrowserConnection();
+            DummyEntry modifiedEntry = ModelConverter.ldifContentRecordToEntry( modifiedRecord, browserConnection );
+            ( ( DummyEntry ) sharedWorkingCopyEntry ).setDn( modifiedEntry.getDn() );
+            new CompoundModification().replaceAttributes( modifiedEntry, sharedWorkingCopyEntry, this );
+
+            // Increasing the update count
+            hasUpdatedSharedWorkingCopyCount++;
+        }
+        catch ( LdapInvalidDnException e )
+        {
+            throw new RuntimeException( e );
+        }
+    }
+
+
+    /**
+     * Sets the input to the LDIF Editor widget.
+     */
+    private void setInput()
+    {
+        removeListener();
+
+        if ( ldifEditorWidget != null )
+        {
+            SourceViewer sourceViewer = ldifEditorWidget.getSourceViewer();
+            IEntry entry = getEditor().getEntryEditorInput().getSharedWorkingCopy( getEditor() );
+            if ( entry != null )
+            {
+                // Making the source viewer editable
+                sourceViewer.setEditable( true );
+
+                // Showing the context menu
+                sourceViewer.getControl().setMenu( contextMenu );
+
+                // Assigning the content to the source viewer
+                sourceViewer.getDocument().set(
+                    ModelConverter.entryToLdifContentRecord( entry )
+                        .toFormattedString( Utils.getLdifFormatParameters() ) );
+            }
+            else
+            {
+                // Making the source viewer non editable
+                sourceViewer.setEditable( false );
+
+                // Hiding the context menu
+                sourceViewer.getControl().setMenu( null );
+
+                // Assigning a blank content to the source viewer
+                sourceViewer.getDocument().set( "" ); //$NON-NLS-1$
+            }
+        }
+
+        addListener();
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public void update()
+    {
+        // Checking if the editor page is the source of this update
+        if ( hasUpdatedSharedWorkingCopyCount != 0 )
+        {
+            // Decreasing the number of updates to be discarded
+            hasUpdatedSharedWorkingCopyCount--;
+        }
+        else
+        {
+            // Reseting the input
+            setInput();
+        }
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public void setFocus()
+    {
+        // Nothing to do.
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public void editorInputChanged()
+    {
+        if ( isInitialized() )
+        {
+            setInput();
+        }
+    }
+}

Added: directory/studio/trunk/plugins/combinededitor/src/main/java/org/apache/directory/studio/combinededitor/editor/Messages.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/plugins/combinededitor/src/main/java/org/apache/directory/studio/combinededitor/editor/Messages.java?rev=1670296&view=auto
==============================================================================
--- directory/studio/trunk/plugins/combinededitor/src/main/java/org/apache/directory/studio/combinededitor/editor/Messages.java (added)
+++ directory/studio/trunk/plugins/combinededitor/src/main/java/org/apache/directory/studio/combinededitor/editor/Messages.java Tue Mar 31 09:56:35 2015
@@ -0,0 +1,31 @@
+package org.apache.directory.studio.combinededitor.editor;
+
+
+import java.util.MissingResourceException;
+import java.util.ResourceBundle;
+
+
+public class Messages
+{
+    private static final String BUNDLE_NAME = "org.apache.directory.studio.combinededitor.editor.messages"; //$NON-NLS-1$
+
+    private static final ResourceBundle RESOURCE_BUNDLE = ResourceBundle.getBundle( BUNDLE_NAME );
+
+
+    private Messages()
+    {
+    }
+
+
+    public static String getString( String key )
+    {
+        try
+        {
+            return RESOURCE_BUNDLE.getString( key );
+        }
+        catch ( MissingResourceException e )
+        {
+            return '!' + key + '!';
+        }
+    }
+}

Added: directory/studio/trunk/plugins/combinededitor/src/main/java/org/apache/directory/studio/combinededitor/editor/MultiTabCombinedEntryEditor.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/plugins/combinededitor/src/main/java/org/apache/directory/studio/combinededitor/editor/MultiTabCombinedEntryEditor.java?rev=1670296&view=auto
==============================================================================
--- directory/studio/trunk/plugins/combinededitor/src/main/java/org/apache/directory/studio/combinededitor/editor/MultiTabCombinedEntryEditor.java (added)
+++ directory/studio/trunk/plugins/combinededitor/src/main/java/org/apache/directory/studio/combinededitor/editor/MultiTabCombinedEntryEditor.java Tue Mar 31 09:56:35 2015
@@ -0,0 +1,18 @@
+package org.apache.directory.studio.combinededitor.editor;
+
+
+/**
+ * An entry editor the opens entries in a single editor for each entry.
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ */
+public class MultiTabCombinedEntryEditor extends CombinedEntryEditor
+{
+    /**
+     * {@inheritDoc}
+     */
+    public boolean isAutoSave()
+    {
+        return false;
+    }
+}

Added: directory/studio/trunk/plugins/combinededitor/src/main/java/org/apache/directory/studio/combinededitor/editor/SingleTabCombinedEntryEditor.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/plugins/combinededitor/src/main/java/org/apache/directory/studio/combinededitor/editor/SingleTabCombinedEntryEditor.java?rev=1670296&view=auto
==============================================================================
--- directory/studio/trunk/plugins/combinededitor/src/main/java/org/apache/directory/studio/combinededitor/editor/SingleTabCombinedEntryEditor.java (added)
+++ directory/studio/trunk/plugins/combinededitor/src/main/java/org/apache/directory/studio/combinededitor/editor/SingleTabCombinedEntryEditor.java Tue Mar 31 09:56:35 2015
@@ -0,0 +1,18 @@
+package org.apache.directory.studio.combinededitor.editor;
+
+
+/**
+ * An entry editor the opens all entries in one single editor tab.
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ */
+public class SingleTabCombinedEntryEditor extends CombinedEntryEditor
+{
+    /**
+    * {@inheritDoc}
+    */
+    public boolean isAutoSave()
+    {
+        return false;
+    }
+}

Added: directory/studio/trunk/plugins/combinededitor/src/main/java/org/apache/directory/studio/combinededitor/editor/TableEditorPage.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/plugins/combinededitor/src/main/java/org/apache/directory/studio/combinededitor/editor/TableEditorPage.java?rev=1670296&view=auto
==============================================================================
--- directory/studio/trunk/plugins/combinededitor/src/main/java/org/apache/directory/studio/combinededitor/editor/TableEditorPage.java (added)
+++ directory/studio/trunk/plugins/combinededitor/src/main/java/org/apache/directory/studio/combinededitor/editor/TableEditorPage.java Tue Mar 31 09:56:35 2015
@@ -0,0 +1,164 @@
+package org.apache.directory.studio.combinededitor.editor;
+
+
+import org.apache.directory.studio.ldapbrowser.common.widgets.entryeditor.EntryEditorWidget;
+import org.apache.directory.studio.ldapbrowser.common.widgets.entryeditor.EntryEditorWidgetConfiguration;
+import org.apache.directory.studio.ldapbrowser.common.widgets.entryeditor.EntryEditorWidgetUniversalListener;
+import org.apache.directory.studio.ldapbrowser.ui.BrowserUIConstants;
+import org.apache.directory.studio.ldapbrowser.ui.BrowserUIPlugin;
+import org.apache.directory.studio.valueeditors.ValueEditorManager;
+import org.eclipse.jface.viewers.TreeViewer;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.CTabItem;
+
+
+/**
+ * This class implements an editor page for the Table Editor.
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ */
+public class TableEditorPage extends AbstractCombinedEntryEditorPage
+{
+    /** The entry editor widget */
+    private EntryEditorWidget entryEditorWidget;
+
+    /** The listener associated with the entry editor widget */
+    private EntryEditorWidgetUniversalListener listener;
+
+
+    /**
+     * Creates a new instance of TableEditorPage.
+     *
+     * @param editor
+     *      the associated editor
+     */
+    public TableEditorPage( CombinedEntryEditor editor )
+    {
+        super( editor );
+
+        // Creating and assigning the tab item
+        CTabItem tabItem = new CTabItem( editor.getTabFolder(), SWT.NONE );
+        tabItem.setText( Messages.getString( "TableEditorPage.TableEditor" ) ); //$NON-NLS-1$
+        tabItem
+            .setImage( BrowserUIPlugin.getDefault().getImage( BrowserUIConstants.IMG_BROWSER_SINGLETAB_ENTRYEDITOR ) );
+        setTabItem( tabItem );
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public void init()
+    {
+        super.init();
+
+        EditorConfiguration configuration = new EditorConfiguration();
+
+        entryEditorWidget = new EntryEditorWidget( configuration );
+        entryEditorWidget.createWidget( getEditor().getTabFolder() );
+
+        TableEditorPageActionGroup entryEditorActionGroup = new TableEditorPageActionGroup( getEditor(),
+            entryEditorWidget, configuration );
+
+        entryEditorActionGroup.fillToolBar( entryEditorWidget.getToolBarManager() );
+        entryEditorActionGroup.fillMenu( entryEditorWidget.getMenuManager() );
+        entryEditorActionGroup.fillContextMenu( entryEditorWidget.getContextMenuManager() );
+
+        setInput();
+
+        getEditor().getSite().setSelectionProvider( entryEditorWidget.getViewer() );
+        listener = new EntryEditorWidgetUniversalListener( entryEditorWidget.getViewer(), configuration,
+            entryEditorActionGroup, entryEditorActionGroup.getOpenDefaultEditorAction() );
+
+        entryEditorActionGroup.setInput( getEditor().getEntryEditorInput().getSharedWorkingCopy( getEditor() ) );
+
+        getEditor().getSite().setSelectionProvider( entryEditorWidget.getViewer() );
+
+        getTabItem().setControl( entryEditorWidget.getControl() );
+    }
+
+
+    /**
+     * Sets the input to the Entry Editor Widget.
+     */
+    private void setInput()
+    {
+        if ( entryEditorWidget != null )
+        {
+            entryEditorWidget.getViewer().setInput(
+                getEditor().getEntryEditorInput().getSharedWorkingCopy( getEditor() ) );
+        }
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public void update()
+    {
+        if ( entryEditorWidget != null )
+        {
+            entryEditorWidget.getViewer().refresh();
+        }
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public void setFocus()
+    {
+        if ( entryEditorWidget != null )
+        {
+            entryEditorWidget.setFocus();
+        }
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public void dispose()
+    {
+        if ( entryEditorWidget != null )
+        {
+            entryEditorWidget.dispose();
+        }
+
+        if ( listener != null )
+        {
+            listener.dispose();
+        }
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public void editorInputChanged()
+    {
+        if ( isInitialized() )
+        {
+            setInput();
+        }
+    }
+
+    /**
+     * A special configuration for the {@link TableEditorPage}.
+     */
+    class EditorConfiguration extends EntryEditorWidgetConfiguration
+    {
+        /**
+        * {@inheritDoc}
+        */
+        public ValueEditorManager getValueEditorManager( TreeViewer viewer )
+        {
+            if ( valueEditorManager == null )
+            {
+                valueEditorManager = new ValueEditorManager( viewer.getTree(), true, false );
+            }
+
+            return valueEditorManager;
+        }
+    }
+}

Added: directory/studio/trunk/plugins/combinededitor/src/main/java/org/apache/directory/studio/combinededitor/editor/TableEditorPageActionGroup.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/plugins/combinededitor/src/main/java/org/apache/directory/studio/combinededitor/editor/TableEditorPageActionGroup.java?rev=1670296&view=auto
==============================================================================
--- directory/studio/trunk/plugins/combinededitor/src/main/java/org/apache/directory/studio/combinededitor/editor/TableEditorPageActionGroup.java (added)
+++ directory/studio/trunk/plugins/combinededitor/src/main/java/org/apache/directory/studio/combinededitor/editor/TableEditorPageActionGroup.java Tue Mar 31 09:56:35 2015
@@ -0,0 +1,439 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *  
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *  
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License. 
+ *  
+ */
+
+package org.apache.directory.studio.combinededitor.editor;
+
+
+import org.apache.directory.studio.connection.ui.actions.CollapseAllAction;
+import org.apache.directory.studio.connection.ui.actions.ExpandAllAction;
+import org.apache.directory.studio.entryeditors.IEntryEditor;
+import org.apache.directory.studio.ldapbrowser.common.BrowserCommonActivator;
+import org.apache.directory.studio.ldapbrowser.common.BrowserCommonConstants;
+import org.apache.directory.studio.ldapbrowser.common.actions.DeleteAllValuesAction;
+import org.apache.directory.studio.ldapbrowser.common.actions.FetchOperationalAttributesAction;
+import org.apache.directory.studio.ldapbrowser.common.actions.NewAttributeAction;
+import org.apache.directory.studio.ldapbrowser.common.actions.RefreshAction;
+import org.apache.directory.studio.ldapbrowser.common.actions.proxy.EntryEditorActionProxy;
+import org.apache.directory.studio.ldapbrowser.common.widgets.entryeditor.EditAttributeDescriptionAction;
+import org.apache.directory.studio.ldapbrowser.common.widgets.entryeditor.EntryEditorWidget;
+import org.apache.directory.studio.ldapbrowser.common.widgets.entryeditor.EntryEditorWidgetActionGroup;
+import org.apache.directory.studio.ldapbrowser.common.widgets.entryeditor.EntryEditorWidgetConfiguration;
+import org.apache.directory.studio.ldapbrowser.common.widgets.entryeditor.OpenDefaultEditorAction;
+import org.apache.directory.studio.ldapbrowser.ui.actions.CopyAttributeDescriptionAction;
+import org.apache.directory.studio.ldapbrowser.ui.actions.CopyDnAction;
+import org.apache.directory.studio.ldapbrowser.ui.actions.CopySearchFilterAction;
+import org.apache.directory.studio.ldapbrowser.ui.actions.CopyUrlAction;
+import org.apache.directory.studio.ldapbrowser.ui.actions.CopyValueAction;
+import org.apache.directory.studio.ldapbrowser.ui.actions.LocateDnInDitAction;
+import org.apache.directory.studio.ldapbrowser.ui.actions.NewBatchOperationAction;
+import org.apache.directory.studio.ldapbrowser.ui.actions.NewSearchAction;
+import org.apache.directory.studio.ldapbrowser.ui.actions.OpenSchemaBrowserAction;
+import org.apache.directory.studio.ldapbrowser.ui.editors.entry.OpenEntryEditorAction;
+import org.apache.directory.studio.ldapbrowser.ui.editors.entry.OpenEntryEditorPreferencePageAction;
+import org.apache.directory.studio.utils.ActionUtils;
+import org.apache.directory.studio.valueeditors.ValueEditorManager;
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.action.IMenuListener;
+import org.eclipse.jface.action.IMenuManager;
+import org.eclipse.jface.action.IToolBarManager;
+import org.eclipse.jface.action.MenuManager;
+import org.eclipse.jface.action.Separator;
+import org.eclipse.jface.viewers.TreeViewer;
+import org.eclipse.ui.IWorkbenchActionConstants;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.actions.ActionFactory;
+import org.eclipse.ui.actions.ContributionItemFactory;
+
+import org.apache.directory.studio.templateeditor.actions.EditorPagePropertiesAction;
+
+
+/**
+ * The EntryEditorWidgetActionGroup manages all actions of the entry editor.
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ */
+public class TableEditorPageActionGroup extends EntryEditorWidgetActionGroup
+{
+    /** The open entry value editor action. */
+    private EntryEditorActionProxy openEntryValueEditorActionProxy;
+
+    /** The open entry editor preference page. */
+    private OpenEntryEditorPreferencePageAction openEntryEditorPreferencePage;
+
+    /** The collapse all action. */
+    private CollapseAllAction collapseAllAction;
+
+    /** The expand all action. */
+    private ExpandAllAction expandAllAction;
+
+    /** The Constant editAttributeDescriptionAction. */
+    private static final String editAttributeDescriptionAction = "editAttributeDescriptionAction"; //$NON-NLS-1$
+
+    /** The Constant refreshAttributesAction. */
+    private static final String refreshAttributesAction = "refreshAttributesAction"; //$NON-NLS-1$
+
+    /** The Constant newAttributeAction. */
+    private static final String newAttributeAction = "newAttributeAction"; //$NON-NLS-1$
+
+    /** The Constant newSearchAction. */
+    private static final String newSearchAction = "newSearchDialogAction"; //$NON-NLS-1$
+
+    /** The Constant newBatchOperationAction. */
+    private static final String newBatchOperationAction = "newBatchOperationAction"; //$NON-NLS-1$
+
+    /** The Constant copyDnAction. */
+    private static final String copyDnAction = "copyDnAction"; //$NON-NLS-1$
+
+    /** The Constant copyUrlAction. */
+    private static final String copyUrlAction = "copyUrlAction"; //$NON-NLS-1$
+
+    /** The Constant copyAttriuteDescriptionAction. */
+    private static final String copyAttriuteDescriptionAction = "copyAttriuteDescriptionAction"; //$NON-NLS-1$
+
+    /** The Constant copyDisplayValueAction. */
+    private static final String copyDisplayValueAction = "copyDisplayValueAction"; //$NON-NLS-1$
+
+    /** The Constant copyValueUtf8Action. */
+    private static final String copyValueUtf8Action = "copyValueUtf8Action"; //$NON-NLS-1$
+
+    /** The Constant copyValueBase64Action. */
+    private static final String copyValueBase64Action = "copyValueBase64Action"; //$NON-NLS-1$
+
+    /** The Constant copyValueHexAction. */
+    private static final String copyValueHexAction = "copyValueHexAction"; //$NON-NLS-1$
+
+    /** The Constant copyValueAsLdifAction. */
+    private static final String copyValueAsLdifAction = "copyValueAsLdifAction"; //$NON-NLS-1$
+
+    /** The Constant copySearchFilterAction. */
+    private static final String copySearchFilterAction = "copySearchFilterAction"; //$NON-NLS-1$
+
+    /** The Constant copyNotSearchFilterAction. */
+    private static final String copyNotSearchFilterAction = "copyNotSearchFilterAction"; //$NON-NLS-1$
+
+    /** The Constant copyAndSearchFilterAction. */
+    private static final String copyAndSearchFilterAction = "copyAndSearchFilterAction"; //$NON-NLS-1$
+
+    /** The Constant copyOrSearchFilterAction. */
+    private static final String copyOrSearchFilterAction = "copyOrSearchFilterAction"; //$NON-NLS-1$
+
+    /** The Constant deleteAllValuesAction. */
+    private static final String deleteAllValuesAction = "deleteAllValuesAction"; //$NON-NLS-1$
+
+    /** The Constant locateDnInDitAction. */
+    private static final String locateDnInDitAction = "locateDnInDitAction"; //$NON-NLS-1$
+
+    /** The Constant showOcdAction. */
+    private static final String showOcdAction = "showOcdAction"; //$NON-NLS-1$
+
+    /** The Constant showAtdAction. */
+    private static final String showAtdAction = "showAtdAction"; //$NON-NLS-1$
+
+    /** The Constant showEqualityMrdAction. */
+    private static final String showEqualityMrdAction = "showEqualityMrdAction"; //$NON-NLS-1$
+
+    /** The Constant showSubstringMrdAction. */
+    private static final String showSubstringMrdAction = "showSubstringMrdAction"; //$NON-NLS-1$
+
+    /** The Constant showOrderingMrdAction. */
+    private static final String showOrderingMrdAction = "showOrderingMrdAction"; //$NON-NLS-1$
+
+    /** The Constant showLsdAction. */
+    private static final String showLsdAction = "showLsdAction"; //$NON-NLS-1$
+
+    /** The Constant fetchOperationalAttributesAction. */
+    private static final String fetchOperationalAttributesAction = "fetchOperationalAttributesAction"; //$NON-NLS-1$
+
+
+    /**
+     * Creates a new instance of TableEditorPageActionGroup.
+     * @param editor 
+     * 
+     * @param entryEditor the entry editor
+     * @param configuration the configuration
+     */
+    public TableEditorPageActionGroup( IEntryEditor entryEditor, EntryEditorWidget mainWidget,
+        EntryEditorWidgetConfiguration configuration )
+    {
+        super( mainWidget, configuration );
+
+        TreeViewer viewer = mainWidget.getViewer();
+        ValueEditorManager valueEditorManager = configuration.getValueEditorManager( viewer );
+
+        // create OpenDefaultEditorAction with enabled rename action flag
+        openDefaultValueEditorActionProxy.dispose();
+        openDefaultValueEditorActionProxy = new EntryEditorActionProxy( viewer, new OpenDefaultEditorAction( viewer,
+            openBestValueEditorActionProxy ) );
+
+        openEntryValueEditorActionProxy = new EntryEditorActionProxy( viewer, new OpenEntryEditorAction( viewer,
+            valueEditorManager, valueEditorManager.getEntryValueEditor(), this ) );
+
+        openEntryEditorPreferencePage = new OpenEntryEditorPreferencePageAction();
+        collapseAllAction = new CollapseAllAction( viewer );
+        expandAllAction = new ExpandAllAction( viewer );
+
+        entryEditorActionMap.put( editAttributeDescriptionAction, new EntryEditorActionProxy( viewer,
+            new EditAttributeDescriptionAction( viewer ) ) );
+
+        entryEditorActionMap.put( refreshAttributesAction, new EntryEditorActionProxy( viewer, new RefreshAction() ) );
+
+        entryEditorActionMap.put( newAttributeAction, new EntryEditorActionProxy( viewer, new NewAttributeAction() ) );
+        entryEditorActionMap.put( newSearchAction, new EntryEditorActionProxy( viewer, new NewSearchAction() ) );
+        entryEditorActionMap.put( newBatchOperationAction, new EntryEditorActionProxy( viewer,
+            new NewBatchOperationAction() ) );
+
+        entryEditorActionMap.put( locateDnInDitAction, new EntryEditorActionProxy( viewer, new LocateDnInDitAction() ) );
+        entryEditorActionMap.put( showOcdAction, new EntryEditorActionProxy( viewer, new OpenSchemaBrowserAction(
+            OpenSchemaBrowserAction.MODE_OBJECTCLASS ) ) );
+        entryEditorActionMap.put( showAtdAction, new EntryEditorActionProxy( viewer, new OpenSchemaBrowserAction(
+            OpenSchemaBrowserAction.MODE_ATTRIBUTETYPE ) ) );
+        entryEditorActionMap.put( showEqualityMrdAction, new EntryEditorActionProxy( viewer,
+            new OpenSchemaBrowserAction( OpenSchemaBrowserAction.MODE_EQUALITYMATCHINGRULE ) ) );
+        entryEditorActionMap.put( showSubstringMrdAction, new EntryEditorActionProxy( viewer,
+            new OpenSchemaBrowserAction( OpenSchemaBrowserAction.MODE_SUBSTRINGMATCHINGRULE ) ) );
+        entryEditorActionMap.put( showOrderingMrdAction, new EntryEditorActionProxy( viewer,
+            new OpenSchemaBrowserAction( OpenSchemaBrowserAction.MODE_ORDERINGMATCHINGRULE ) ) );
+        entryEditorActionMap.put( showLsdAction, new EntryEditorActionProxy( viewer, new OpenSchemaBrowserAction(
+            OpenSchemaBrowserAction.MODE_SYNTAX ) ) );
+
+        entryEditorActionMap.put( copyDnAction, new EntryEditorActionProxy( viewer, new CopyDnAction() ) );
+        entryEditorActionMap.put( copyUrlAction, new EntryEditorActionProxy( viewer, new CopyUrlAction() ) );
+        entryEditorActionMap.put( copyAttriuteDescriptionAction, new EntryEditorActionProxy( viewer,
+            new CopyAttributeDescriptionAction() ) );
+        entryEditorActionMap.put( copyDisplayValueAction, new EntryEditorActionProxy( viewer, new CopyValueAction(
+            CopyValueAction.Mode.DISPLAY, valueEditorManager ) ) );
+        entryEditorActionMap.put( copyValueUtf8Action, new EntryEditorActionProxy( viewer, new CopyValueAction(
+            CopyValueAction.Mode.UTF8, valueEditorManager ) ) );
+        entryEditorActionMap.put( copyValueBase64Action, new EntryEditorActionProxy( viewer, new CopyValueAction(
+            CopyValueAction.Mode.BASE64, valueEditorManager ) ) );
+        entryEditorActionMap.put( copyValueHexAction, new EntryEditorActionProxy( viewer, new CopyValueAction(
+            CopyValueAction.Mode.HEX, valueEditorManager ) ) );
+        entryEditorActionMap.put( copyValueAsLdifAction, new EntryEditorActionProxy( viewer, new CopyValueAction(
+            CopyValueAction.Mode.LDIF, valueEditorManager ) ) );
+
+        entryEditorActionMap.put( copySearchFilterAction, new EntryEditorActionProxy( viewer,
+            new CopySearchFilterAction( CopySearchFilterAction.MODE_EQUALS ) ) );
+        entryEditorActionMap.put( copyNotSearchFilterAction, new EntryEditorActionProxy( viewer,
+            new CopySearchFilterAction( CopySearchFilterAction.MODE_NOT ) ) );
+        entryEditorActionMap.put( copyAndSearchFilterAction, new EntryEditorActionProxy( viewer,
+            new CopySearchFilterAction( CopySearchFilterAction.MODE_AND ) ) );
+        entryEditorActionMap.put( copyOrSearchFilterAction, new EntryEditorActionProxy( viewer,
+            new CopySearchFilterAction( CopySearchFilterAction.MODE_OR ) ) );
+
+        entryEditorActionMap.put( deleteAllValuesAction, new EntryEditorActionProxy( viewer,
+            new DeleteAllValuesAction() ) );
+        entryEditorActionMap.put( fetchOperationalAttributesAction, new EntryEditorActionProxy( viewer,
+            new FetchOperationalAttributesAction() ) );
+
+        entryEditorActionMap.put( propertyDialogAction, new EntryEditorActionProxy( viewer,
+            new EditorPagePropertiesAction( entryEditor ) ) );
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public void dispose()
+    {
+        if ( expandAllAction != null )
+        {
+            deactivateGlobalActionHandlers();
+
+            openEntryValueEditorActionProxy.dispose();
+            openEntryValueEditorActionProxy = null;
+            openEntryEditorPreferencePage = null;
+            expandAllAction.dispose();
+            expandAllAction = null;
+            collapseAllAction.dispose();
+            collapseAllAction = null;
+        }
+
+        super.dispose();
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public void fillToolBar( IToolBarManager toolBarManager )
+    {
+        toolBarManager.add( new Separator() );
+        toolBarManager.add( entryEditorActionMap.get( newValueAction ) );
+        toolBarManager.add( entryEditorActionMap.get( newAttributeAction ) );
+        toolBarManager.add( new Separator() );
+        toolBarManager.add( entryEditorActionMap.get( deleteAction ) );
+        toolBarManager.add( entryEditorActionMap.get( deleteAllValuesAction ) );
+        toolBarManager.add( new Separator() );
+        toolBarManager.add( entryEditorActionMap.get( refreshAttributesAction ) );
+        toolBarManager.add( new Separator() );
+        toolBarManager.add( expandAllAction );
+        toolBarManager.add( collapseAllAction );
+        toolBarManager.add( new Separator() );
+        toolBarManager.add( showQuickFilterAction );
+        toolBarManager.update( true );
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public void fillMenu( IMenuManager menuManager )
+    {
+        menuManager.add( openSortDialogAction );
+        menuManager.add( new Separator() );
+        menuManager.add( showDecoratedValuesAction );
+        menuManager.add( new Separator() );
+        menuManager.add( openEntryEditorPreferencePage );
+        menuManager.addMenuListener( new IMenuListener()
+        {
+            public void menuAboutToShow( IMenuManager manager )
+            {
+                showDecoratedValuesAction.setChecked( !BrowserCommonActivator.getDefault().getPreferenceStore()
+                    .getBoolean( BrowserCommonConstants.PREFERENCE_SHOW_RAW_VALUES ) );
+            }
+        } );
+        menuManager.update( true );
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    protected void contextMenuAboutToShow( IMenuManager menuManager )
+    {
+        // new
+        menuManager.add( entryEditorActionMap.get( newAttributeAction ) );
+        menuManager.add( entryEditorActionMap.get( newValueAction ) );
+        menuManager.add( entryEditorActionMap.get( newSearchAction ) );
+        menuManager.add( entryEditorActionMap.get( newBatchOperationAction ) );
+        menuManager.add( new Separator() );
+
+        // navigation
+        menuManager.add( entryEditorActionMap.get( locateDnInDitAction ) );
+        MenuManager schemaMenuManager = new MenuManager( Messages
+            .getString( "TableEditorPageActionGroup.OpenSchemaBrowser" ) ); //$NON-NLS-1$
+        schemaMenuManager.add( entryEditorActionMap.get( showOcdAction ) );
+        schemaMenuManager.add( entryEditorActionMap.get( showAtdAction ) );
+        schemaMenuManager.add( entryEditorActionMap.get( showEqualityMrdAction ) );
+        schemaMenuManager.add( entryEditorActionMap.get( showSubstringMrdAction ) );
+        schemaMenuManager.add( entryEditorActionMap.get( showOrderingMrdAction ) );
+        schemaMenuManager.add( entryEditorActionMap.get( showLsdAction ) );
+        menuManager.add( schemaMenuManager );
+        MenuManager showInSubMenu = new MenuManager( Messages.getString( "TableEditorPageActionGroup.ShowIn" ) ); //$NON-NLS-1$
+        showInSubMenu.add( ContributionItemFactory.VIEWS_SHOW_IN.create( PlatformUI.getWorkbench()
+            .getActiveWorkbenchWindow() ) );
+        menuManager.add( showInSubMenu );
+
+        menuManager.add( new Separator() );
+
+        // copy, paste, delete
+        menuManager.add( entryEditorActionMap.get( copyAction ) );
+        menuManager.add( entryEditorActionMap.get( pasteAction ) );
+        menuManager.add( entryEditorActionMap.get( deleteAction ) );
+        menuManager.add( entryEditorActionMap.get( selectAllAction ) );
+        MenuManager advancedMenuManager = new MenuManager( Messages.getString( "TableEditorPageActionGroup.Advanced" ) ); //$NON-NLS-1$
+        advancedMenuManager.add( entryEditorActionMap.get( copyDnAction ) );
+        advancedMenuManager.add( entryEditorActionMap.get( copyUrlAction ) );
+        advancedMenuManager.add( new Separator() );
+        advancedMenuManager.add( entryEditorActionMap.get( copyAttriuteDescriptionAction ) );
+        advancedMenuManager.add( new Separator() );
+        advancedMenuManager.add( entryEditorActionMap.get( copyDisplayValueAction ) );
+        advancedMenuManager.add( entryEditorActionMap.get( copyValueUtf8Action ) );
+        advancedMenuManager.add( entryEditorActionMap.get( copyValueBase64Action ) );
+        advancedMenuManager.add( entryEditorActionMap.get( copyValueHexAction ) );
+        advancedMenuManager.add( new Separator() );
+        advancedMenuManager.add( entryEditorActionMap.get( copyValueAsLdifAction ) );
+        advancedMenuManager.add( new Separator() );
+        advancedMenuManager.add( entryEditorActionMap.get( copySearchFilterAction ) );
+        advancedMenuManager.add( entryEditorActionMap.get( copyNotSearchFilterAction ) );
+        advancedMenuManager.add( entryEditorActionMap.get( copyAndSearchFilterAction ) );
+        advancedMenuManager.add( entryEditorActionMap.get( copyOrSearchFilterAction ) );
+        advancedMenuManager.add( new Separator() );
+        advancedMenuManager.add( entryEditorActionMap.get( deleteAllValuesAction ) );
+        menuManager.add( advancedMenuManager );
+        menuManager.add( new Separator() );
+
+        // edit
+        menuManager.add( entryEditorActionMap.get( editAttributeDescriptionAction ) );
+        super.addEditMenu( menuManager );
+        menuManager.add( openEntryValueEditorActionProxy );
+        menuManager.add( new Separator() );
+
+        // refresh
+        menuManager.add( entryEditorActionMap.get( refreshAttributesAction ) );
+        if ( entryEditorActionMap.get( fetchOperationalAttributesAction ).isEnabled() )
+        {
+            menuManager.add( entryEditorActionMap.get( fetchOperationalAttributesAction ) );
+        }
+        menuManager.add( new Separator() );
+
+        // additions
+        menuManager.add( new Separator( IWorkbenchActionConstants.MB_ADDITIONS ) );
+
+        // properties
+        menuManager.add( entryEditorActionMap.get( propertyDialogAction ) );
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public void activateGlobalActionHandlers()
+    {
+        if ( actionBars != null )
+        {
+            actionBars.setGlobalActionHandler( ActionFactory.REFRESH.getId(), entryEditorActionMap
+                .get( refreshAttributesAction ) );
+        }
+
+        super.activateGlobalActionHandlers();
+
+        IAction naa = entryEditorActionMap.get( newAttributeAction );
+        ActionUtils.activateActionHandler( naa );
+        IAction lid = entryEditorActionMap.get( locateDnInDitAction );
+        ActionUtils.activateActionHandler( lid );
+        IAction eada = entryEditorActionMap.get( editAttributeDescriptionAction );
+        ActionUtils.activateActionHandler( eada );
+        ActionUtils.activateActionHandler( openEntryValueEditorActionProxy );
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public void deactivateGlobalActionHandlers()
+    {
+        if ( actionBars != null )
+        {
+            actionBars.setGlobalActionHandler( ActionFactory.REFRESH.getId(), null );
+        }
+
+        super.deactivateGlobalActionHandlers();
+
+        IAction naa = entryEditorActionMap.get( newAttributeAction );
+        ActionUtils.deactivateActionHandler( naa );
+        IAction lid = entryEditorActionMap.get( locateDnInDitAction );
+        ActionUtils.deactivateActionHandler( lid );
+        IAction eada = entryEditorActionMap.get( editAttributeDescriptionAction );
+        ActionUtils.deactivateActionHandler( eada );
+        ActionUtils.deactivateActionHandler( openEntryValueEditorActionProxy );
+    }
+
+}

Added: directory/studio/trunk/plugins/combinededitor/src/main/java/org/apache/directory/studio/combinededitor/editor/TemplateEditorPage.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/plugins/combinededitor/src/main/java/org/apache/directory/studio/combinededitor/editor/TemplateEditorPage.java?rev=1670296&view=auto
==============================================================================
--- directory/studio/trunk/plugins/combinededitor/src/main/java/org/apache/directory/studio/combinededitor/editor/TemplateEditorPage.java (added)
+++ directory/studio/trunk/plugins/combinededitor/src/main/java/org/apache/directory/studio/combinededitor/editor/TemplateEditorPage.java Tue Mar 31 09:56:35 2015
@@ -0,0 +1,136 @@
+package org.apache.directory.studio.combinededitor.editor;
+
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.CTabItem;
+
+import org.apache.directory.studio.templateeditor.EntryTemplatePlugin;
+import org.apache.directory.studio.templateeditor.EntryTemplatePluginConstants;
+import org.apache.directory.studio.templateeditor.editor.TemplateEditorWidget;
+import org.apache.directory.studio.templateeditor.model.Template;
+
+
+/**
+ * This class implements an editor page for the Template Editor.
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ */
+public class TemplateEditorPage extends AbstractCombinedEntryEditorPage
+{
+    /** The template editor widget */
+    private TemplateEditorWidget templateEditorWidget;
+
+
+    /**
+     * Creates a new instance of TemplateEditorPage.
+     *
+     * @param editor
+     *      the associated editor
+     */
+    public TemplateEditorPage( CombinedEntryEditor editor )
+    {
+        super( editor );
+
+        // Creating and assigning the tab item
+        CTabItem tabItem = new CTabItem( editor.getTabFolder(), SWT.NONE );
+        tabItem.setText( Messages.getString( "TemplateEditorPage.TemplateEditor" ) ); //$NON-NLS-1$
+        tabItem.setImage( EntryTemplatePlugin.getDefault().getImage( EntryTemplatePluginConstants.IMG_TEMPLATE ) );
+        setTabItem( tabItem );
+
+        // Creating the template editor widget
+        templateEditorWidget = new TemplateEditorWidget( editor );
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public void init()
+    {
+        if ( templateEditorWidget != null )
+        {
+            // Initializing the template editor widget
+            templateEditorWidget.init( getEditor().getTabFolder() );
+
+            // Updating the editor's tab folder to force the attachment of the new form
+            getTabItem().setControl( templateEditorWidget.getForm() );
+            getEditor().getTabFolder().update();
+        }
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public void dispose()
+    {
+        if ( templateEditorWidget != null )
+        {
+            // Disposing the template editor widget
+            templateEditorWidget.dispose();
+        }
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public void update()
+    {
+        if ( templateEditorWidget != null )
+        {
+            // Updating the template editor widget
+            templateEditorWidget.update();
+
+            // Updating the editor's tab folder to force the attachment of the new form
+            getTabItem().setControl( templateEditorWidget.getForm() );
+            getEditor().getTabFolder().update();
+        }
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public void setFocus()
+    {
+        if ( templateEditorWidget != null )
+        {
+            // Setting focus on the template editor widget
+            templateEditorWidget.setFocus();
+        }
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public void editorInputChanged()
+    {
+        if ( templateEditorWidget != null )
+        {
+            // Changing the editor input on the template editor widget
+            templateEditorWidget.editorInputChanged();
+
+            // Updating the editor's tab folder to force the attachment of the new form
+            getTabItem().setControl( templateEditorWidget.getForm() );
+            getEditor().getTabFolder().update();
+        }
+    }
+
+
+    /**
+     * This method is called by the editor when a 'Switch Template' event occurs.
+     *
+     * @param templateEditorWidget
+     *      the template editor widget
+     * @param template
+     *      the template
+     */
+    public void templateSwitched( TemplateEditorWidget templateEditorWidget, Template template )
+    {
+        // Updating the editor's tab folder to force the attachment of the new form
+        getTabItem().setControl( templateEditorWidget.getForm() );
+        getEditor().getTabFolder().update();
+    }
+}

Added: directory/studio/trunk/plugins/combinededitor/src/main/java/org/apache/directory/studio/combinededitor/editor/messages.properties
URL: http://svn.apache.org/viewvc/directory/studio/trunk/plugins/combinededitor/src/main/java/org/apache/directory/studio/combinededitor/editor/messages.properties?rev=1670296&view=auto
==============================================================================
--- directory/studio/trunk/plugins/combinededitor/src/main/java/org/apache/directory/studio/combinededitor/editor/messages.properties (added)
+++ directory/studio/trunk/plugins/combinededitor/src/main/java/org/apache/directory/studio/combinededitor/editor/messages.properties Tue Mar 31 09:56:35 2015
@@ -0,0 +1,12 @@
+LdifEditorPage.LDIFEditor=LDIF Editor
+
+TableEditorPage.TableEditor=Table Editor
+
+TableEditorPageActionGroup.Advanced=Advanced
+TableEditorPageActionGroup.OpenSchemaBrowser=Open Schema Browser
+TableEditorPageActionGroup.ShowIn=Show In
+
+TemplateEditorPage.NoEntrySelected=No Entry Selected
+TemplateEditorPage.NoTemplateIsMatchingThisEntry=No template is matching this entry
+TemplateEditorPage.TemplateEditor=Template Editor
+TemplateEditorPage.UnableToDisplayTheEntry=Unable to display the entry

Added: directory/studio/trunk/plugins/combinededitor/src/main/java/org/apache/directory/studio/combinededitor/editor/messages_de.properties
URL: http://svn.apache.org/viewvc/directory/studio/trunk/plugins/combinededitor/src/main/java/org/apache/directory/studio/combinededitor/editor/messages_de.properties?rev=1670296&view=auto
==============================================================================
--- directory/studio/trunk/plugins/combinededitor/src/main/java/org/apache/directory/studio/combinededitor/editor/messages_de.properties (added)
+++ directory/studio/trunk/plugins/combinededitor/src/main/java/org/apache/directory/studio/combinededitor/editor/messages_de.properties Tue Mar 31 09:56:35 2015
@@ -0,0 +1,13 @@
+
+LdifEditorPage.LDIFEditor=LDIF-Editor
+
+TableEditorPage.TableEditor=Tabellen-Editor
+
+TableEditorPageActionGroup.Advanced=Erweitert
+TableEditorPageActionGroup.OpenSchemaBrowser=\u00D6ffne Schema Browser
+TableEditorPageActionGroup.ShowIn  =Anzeigen in
+
+TemplateEditorPage.NoEntrySelected=Kein Eintrag ausgew\u00E4hlt
+TemplateEditorPage.NoTemplateIsMatchingThisEntry=Kein passendes Template f\u00FCr diesen Eintrag
+TemplateEditorPage.TemplateEditor =Template-Editor
+TemplateEditorPage.UnableToDisplayTheEntry=Der Eintrag kann nicht angezeigt werden

Added: directory/studio/trunk/plugins/combinededitor/src/main/java/org/apache/directory/studio/combinededitor/editor/messages_fr.properties
URL: http://svn.apache.org/viewvc/directory/studio/trunk/plugins/combinededitor/src/main/java/org/apache/directory/studio/combinededitor/editor/messages_fr.properties?rev=1670296&view=auto
==============================================================================
--- directory/studio/trunk/plugins/combinededitor/src/main/java/org/apache/directory/studio/combinededitor/editor/messages_fr.properties (added)
+++ directory/studio/trunk/plugins/combinededitor/src/main/java/org/apache/directory/studio/combinededitor/editor/messages_fr.properties Tue Mar 31 09:56:35 2015
@@ -0,0 +1,12 @@
+LdifEditorPage.LDIFEditor=Editeur LDIF
+
+TableEditorPage.TableEditor=Editeur Tabulaire
+
+TableEditorPageActionGroup.Advanced=Avanc\u00E9
+TableEditorPageActionGroup.OpenSchemaBrowser=Ouvrir le navigateur de sch\u00E9ma
+TableEditorPageActionGroup.ShowIn=Afficher dans
+
+TemplateEditorPage.NoEntrySelected=Aucune entrée sélectionnée
+TemplateEditorPage.NoTemplateIsMatchingThisEntry=Aucun modèle ne correspond à cette entrée
+TemplateEditorPage.TemplateEditor=Editeur Formaté
+TemplateEditorPage.UnableToDisplayTheEntry=Impossible d'afficher l'entrée
\ No newline at end of file

Added: directory/studio/trunk/plugins/combinededitor/src/main/java/org/apache/directory/studio/combinededitor/messages.properties
URL: http://svn.apache.org/viewvc/directory/studio/trunk/plugins/combinededitor/src/main/java/org/apache/directory/studio/combinededitor/messages.properties?rev=1670296&view=auto
==============================================================================
--- directory/studio/trunk/plugins/combinededitor/src/main/java/org/apache/directory/studio/combinededitor/messages.properties (added)
+++ directory/studio/trunk/plugins/combinededitor/src/main/java/org/apache/directory/studio/combinededitor/messages.properties Tue Mar 31 09:56:35 2015
@@ -0,0 +1 @@
+CombinedEditorPlugin.UnableToGetPluginProperties=Unable to get the plugin properties.

Added: directory/studio/trunk/plugins/combinededitor/src/main/java/org/apache/directory/studio/combinededitor/messages_de.properties
URL: http://svn.apache.org/viewvc/directory/studio/trunk/plugins/combinededitor/src/main/java/org/apache/directory/studio/combinededitor/messages_de.properties?rev=1670296&view=auto
==============================================================================
--- directory/studio/trunk/plugins/combinededitor/src/main/java/org/apache/directory/studio/combinededitor/messages_de.properties (added)
+++ directory/studio/trunk/plugins/combinededitor/src/main/java/org/apache/directory/studio/combinededitor/messages_de.properties Tue Mar 31 09:56:35 2015
@@ -0,0 +1 @@
+CombinedEditorPlugin.UnableToGetPluginProperties=Plugin Eigenschaften konnten nicht geladen werden
\ No newline at end of file

Added: directory/studio/trunk/plugins/combinededitor/src/main/java/org/apache/directory/studio/combinededitor/messages_fr.properties
URL: http://svn.apache.org/viewvc/directory/studio/trunk/plugins/combinededitor/src/main/java/org/apache/directory/studio/combinededitor/messages_fr.properties?rev=1670296&view=auto
==============================================================================
--- directory/studio/trunk/plugins/combinededitor/src/main/java/org/apache/directory/studio/combinededitor/messages_fr.properties (added)
+++ directory/studio/trunk/plugins/combinededitor/src/main/java/org/apache/directory/studio/combinededitor/messages_fr.properties Tue Mar 31 09:56:35 2015
@@ -0,0 +1 @@
+CombinedEditorPlugin.UnableToGetPluginProperties=Impossible de r\u00E9cup\u00E9rer les propri\u00E9t\u00E9s de ce plugin
\ No newline at end of file

Added: directory/studio/trunk/plugins/combinededitor/src/main/java/org/apache/directory/studio/combinededitor/preferences/CombinedEntryEditorPreferencePage.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/plugins/combinededitor/src/main/java/org/apache/directory/studio/combinededitor/preferences/CombinedEntryEditorPreferencePage.java?rev=1670296&view=auto
==============================================================================
--- directory/studio/trunk/plugins/combinededitor/src/main/java/org/apache/directory/studio/combinededitor/preferences/CombinedEntryEditorPreferencePage.java (added)
+++ directory/studio/trunk/plugins/combinededitor/src/main/java/org/apache/directory/studio/combinededitor/preferences/CombinedEntryEditorPreferencePage.java Tue Mar 31 09:56:35 2015
@@ -0,0 +1,407 @@
+package org.apache.directory.studio.combinededitor.preferences;
+
+
+import org.apache.directory.studio.common.ui.widgets.BaseWidgetUtils;
+import org.eclipse.jface.preference.IPreferenceStore;
+import org.eclipse.jface.preference.PreferencePage;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Group;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.ui.IWorkbench;
+import org.eclipse.ui.IWorkbenchPreferencePage;
+
+import org.apache.directory.studio.combinededitor.CombinedEditorPlugin;
+import org.apache.directory.studio.combinededitor.CombinedEditorPluginConstants;
+import org.apache.directory.studio.templateeditor.EntryTemplatePlugin;
+
+
+/**
+ * This class implements the Combined Entry Editor preference page.
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ */
+public class CombinedEntryEditorPreferencePage extends PreferencePage implements IWorkbenchPreferencePage
+{
+    /** The preferences store */
+    private IPreferenceStore store;
+
+    // UI Fields
+    private Button defaultEditorTemplateRadioButton;
+    private Button autoSwitchToOtherEditorCheckbox;
+    private Button autoSwitchToTableEditorRadioButton;
+    private Button autoSwitchToLDIFEditorRadioButton;
+    private Label autoSwitchLabel;
+    private Button defaultEditorTableRadioButton;
+    private Button defaultEditorLDIFRadioButton;
+
+
+    /**
+     * Creates a new instance of CombinedEntryEditorPreferencePage.
+     */
+    public CombinedEntryEditorPreferencePage()
+    {
+        super();
+        super.setPreferenceStore( EntryTemplatePlugin.getDefault().getPreferenceStore() );
+        super.setDescription( Messages.getString( "CombinedEntryEditorPreferencePage.PrefPageDescription" ) ); //$NON-NLS-1$
+
+        store = CombinedEditorPlugin.getDefault().getPreferenceStore();
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public void init( IWorkbench workbench )
+    {
+        // Nothing to do
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    protected Control createContents( Composite parent )
+    {
+        Composite composite = new Composite( parent, SWT.NONE );
+        composite.setLayout( new GridLayout() );
+        composite.setLayoutData( new GridData( SWT.FILL, SWT.FILL, true, true ) );
+
+        createUI( composite );
+        initListeners();
+        initUI();
+
+        return composite;
+    }
+
+
+    /**
+     * Creates the user interface.
+     *
+     * @param parent
+     *      the parent composite
+     */
+    private void createUI( Composite parent )
+    {
+        // Main Composite
+        Composite composite = BaseWidgetUtils.createColumnContainer( parent, 1, 1 );
+
+        // Default Editor Group
+        Group defaultEditorGroup = BaseWidgetUtils.createGroup( composite, Messages
+            .getString( "CombinedEntryEditorPreferencePage.UseAsDefaultEditor" ), 1 ); //$NON-NLS-1$
+        defaultEditorGroup.setLayout( new GridLayout( 4, false ) );
+
+        // Template Editor Radio Button
+        defaultEditorTemplateRadioButton = BaseWidgetUtils.createRadiobutton( defaultEditorGroup, Messages
+            .getString( "CombinedEntryEditorPreferencePage.TemplateEditor" ), 1 ); //$NON-NLS-1$
+        defaultEditorTemplateRadioButton.setLayoutData( new GridData( SWT.FILL, SWT.NONE, true, false, 4, 1 ) );
+
+        // Indent
+        BaseWidgetUtils.createRadioIndent( defaultEditorGroup, 1 );
+
+        // Auto Switch Checkbox
+        autoSwitchToOtherEditorCheckbox = BaseWidgetUtils.createCheckbox( defaultEditorGroup, Messages
+            .getString( "CombinedEntryEditorPreferencePage.AutoSwitchToFollowingTabNoTemplateAvailable" ), 1 ); //$NON-NLS-1$
+        autoSwitchToOtherEditorCheckbox.setLayoutData( new GridData( SWT.FILL, SWT.NONE, true, false, 3, 1 ) );
+
+        // Indent
+        BaseWidgetUtils.createRadioIndent( defaultEditorGroup, 1 );
+
+        // Indent
+        BaseWidgetUtils.createRadioIndent( defaultEditorGroup, 1 );
+
+        // Table Editor Radio Button
+        autoSwitchToTableEditorRadioButton = BaseWidgetUtils.createRadiobutton( defaultEditorGroup, Messages
+            .getString( "CombinedEntryEditorPreferencePage.TableEditor" ), 1 ); //$NON-NLS-1$
+
+        // Table Editor Radio Button
+        autoSwitchToLDIFEditorRadioButton = BaseWidgetUtils.createRadiobutton( defaultEditorGroup, Messages
+            .getString( "CombinedEntryEditorPreferencePage.LDIFEditor" ), 1 ); //$NON-NLS-1$
+
+        // Indent
+        BaseWidgetUtils.createRadioIndent( defaultEditorGroup, 1 );
+
+        // Auto Switch Label
+        autoSwitchLabel = BaseWidgetUtils.createLabel( defaultEditorGroup, Messages
+            .getString( "CombinedEntryEditorPreferencePage.AutoSwitchNote" ), //$NON-NLS-1$
+            1 );
+        autoSwitchLabel.setLayoutData( new GridData( SWT.FILL, SWT.NONE, true, false, 3, 1 ) );
+
+        // Table Editor Radio Button
+        defaultEditorTableRadioButton = BaseWidgetUtils.createRadiobutton( defaultEditorGroup, Messages
+            .getString( "CombinedEntryEditorPreferencePage.TableEditor" ), 1 ); //$NON-NLS-1$
+        defaultEditorTableRadioButton.setLayoutData( new GridData( SWT.FILL, SWT.NONE, true, false, 4, 1 ) );
+
+        // LDIF Editor Radio Button
+        defaultEditorLDIFRadioButton = BaseWidgetUtils.createRadiobutton( defaultEditorGroup, Messages
+            .getString( "CombinedEntryEditorPreferencePage.LDIFEditor" ), 1 ); //$NON-NLS-1$
+        defaultEditorLDIFRadioButton.setLayoutData( new GridData( SWT.FILL, SWT.NONE, true, false, 4, 1 ) );
+    }
+
+
+    /**
+     * Initializes the listeners
+     */
+    private void initListeners()
+    {
+        defaultEditorTemplateRadioButton.addSelectionListener( new SelectionAdapter()
+        {
+            public void widgetSelected( SelectionEvent e )
+            {
+                defaultEditorTemplateAction();
+            }
+        } );
+
+        autoSwitchToOtherEditorCheckbox.addSelectionListener( new SelectionAdapter()
+        {
+            public void widgetSelected( SelectionEvent e )
+            {
+                autoSwitchToOtherEditorAction();
+            }
+        } );
+
+        autoSwitchToTableEditorRadioButton.addSelectionListener( new SelectionAdapter()
+        {
+            public void widgetSelected( SelectionEvent e )
+            {
+                autoSwitchToTableEditorAction();
+            }
+        } );
+
+        autoSwitchToLDIFEditorRadioButton.addSelectionListener( new SelectionAdapter()
+        {
+            public void widgetSelected( SelectionEvent e )
+            {
+                autoSwitchToLDIFEditorAction();
+            }
+        } );
+
+        defaultEditorTableRadioButton.addSelectionListener( new SelectionAdapter()
+        {
+            public void widgetSelected( SelectionEvent e )
+            {
+                defaultEditorTableAction();
+            }
+        } );
+
+        defaultEditorLDIFRadioButton.addSelectionListener( new SelectionAdapter()
+        {
+            public void widgetSelected( SelectionEvent e )
+            {
+                defaultEditorLDIFAction();
+            }
+        } );
+    }
+
+
+    /**
+     * This method is called when the 'Default Editor Template Radio Button' is clicked.
+     */
+    private void defaultEditorTemplateAction()
+    {
+        defaultEditorTemplateRadioButton.setSelection( true );
+        defaultEditorTableRadioButton.setSelection( false );
+        defaultEditorLDIFRadioButton.setSelection( false );
+
+        autoSwitchToOtherEditorCheckbox.setEnabled( true );
+        autoSwitchToTableEditorRadioButton.setEnabled( autoSwitchToOtherEditorCheckbox.getSelection() );
+        autoSwitchToLDIFEditorRadioButton.setEnabled( autoSwitchToOtherEditorCheckbox.getSelection() );
+        autoSwitchLabel.setEnabled( true );
+    }
+
+
+    /**
+     * This method is called when the 'Auto Switch To Other Editor Checkbox' is clicked.
+     */
+    private void autoSwitchToOtherEditorAction()
+    {
+        autoSwitchToTableEditorRadioButton.setEnabled( autoSwitchToOtherEditorCheckbox.getSelection() );
+        autoSwitchToLDIFEditorRadioButton.setEnabled( autoSwitchToOtherEditorCheckbox.getSelection() );
+        autoSwitchLabel.setEnabled( autoSwitchToOtherEditorCheckbox.getSelection() );
+    }
+
+
+    /**
+     * This method is called when the 'Auto Switch To Table Editor Radio Button' is clicked.
+     */
+    private void autoSwitchToTableEditorAction()
+    {
+        autoSwitchToTableEditorRadioButton.setSelection( true );
+        autoSwitchToLDIFEditorRadioButton.setSelection( false );
+    }
+
+
+    /**
+     * This method is called when the 'Auto Switch To LDIF Editor Radio Button' is clicked.
+     */
+    private void autoSwitchToLDIFEditorAction()
+    {
+        autoSwitchToTableEditorRadioButton.setSelection( false );
+        autoSwitchToLDIFEditorRadioButton.setSelection( true );
+    }
+
+
+    /**
+     * This method is called when the 'Default Editor Table Radio Button' is clicked.
+     */
+    private void defaultEditorTableAction()
+    {
+        defaultEditorTemplateRadioButton.setSelection( false );
+        defaultEditorTableRadioButton.setSelection( true );
+        defaultEditorLDIFRadioButton.setSelection( false );
+
+        autoSwitchToOtherEditorCheckbox.setEnabled( false );
+        autoSwitchToTableEditorRadioButton.setEnabled( false );
+        autoSwitchToLDIFEditorRadioButton.setEnabled( false );
+        autoSwitchLabel.setEnabled( false );
+    }
+
+
+    /**
+     * This method is called when the 'Default Editor LDIF Radio Button' is clicked.
+     */
+    private void defaultEditorLDIFAction()
+    {
+        defaultEditorTemplateRadioButton.setSelection( false );
+        defaultEditorTableRadioButton.setSelection( false );
+        defaultEditorLDIFRadioButton.setSelection( true );
+
+        autoSwitchToOtherEditorCheckbox.setEnabled( false );
+        autoSwitchToTableEditorRadioButton.setEnabled( false );
+        autoSwitchToLDIFEditorRadioButton.setEnabled( false );
+        autoSwitchLabel.setEnabled( false );
+    }
+
+
+    /**
+     * Initializes the User Interface.
+     */
+    private void initUI()
+    {
+        initUI( store.getInt( CombinedEditorPluginConstants.PREF_DEFAULT_EDITOR ), store
+            .getBoolean( CombinedEditorPluginConstants.PREF_AUTO_SWITCH_TO_ANOTHER_EDITOR ), store
+            .getInt( CombinedEditorPluginConstants.PREF_AUTO_SWITCH_EDITOR ) );
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    protected void performDefaults()
+    {
+        initUI( store.getDefaultInt( CombinedEditorPluginConstants.PREF_DEFAULT_EDITOR ), store
+            .getDefaultBoolean( CombinedEditorPluginConstants.PREF_AUTO_SWITCH_TO_ANOTHER_EDITOR ), store
+            .getDefaultInt( CombinedEditorPluginConstants.PREF_AUTO_SWITCH_EDITOR ) );
+
+        super.performDefaults();
+    }
+
+
+    /**
+     * Initializes the UI.
+     *
+     * @param defaultEditor
+     *      the default editor
+     * @param autoSwitchToOtherEditor
+     *      the auto switch to other editor
+     * @param autoSwitchEditor
+     *      the auto switch editor
+     */
+    private void initUI( int defaultEditor, boolean autoSwitchToOtherEditor, int autoSwitchEditor )
+    {
+        // Default Editor
+        if ( defaultEditor == CombinedEditorPluginConstants.PREF_DEFAULT_EDITOR_TEMPLATE )
+        {
+            defaultEditorTemplateRadioButton.setSelection( true );
+            defaultEditorTableRadioButton.setSelection( false );
+            defaultEditorLDIFRadioButton.setSelection( false );
+        }
+        else if ( defaultEditor == CombinedEditorPluginConstants.PREF_DEFAULT_EDITOR_TABLE )
+        {
+            defaultEditorTemplateRadioButton.setSelection( false );
+            defaultEditorTableRadioButton.setSelection( true );
+            defaultEditorLDIFRadioButton.setSelection( false );
+        }
+        else if ( defaultEditor == CombinedEditorPluginConstants.PREF_DEFAULT_EDITOR_LDIF )
+        {
+            defaultEditorTemplateRadioButton.setSelection( false );
+            defaultEditorTableRadioButton.setSelection( false );
+            defaultEditorLDIFRadioButton.setSelection( true );
+        }
+
+        // Auto Switch
+        autoSwitchToOtherEditorCheckbox.setEnabled( defaultEditorTemplateRadioButton.getSelection() );
+        autoSwitchToOtherEditorCheckbox.setSelection( autoSwitchToOtherEditor );
+
+        // Auto Switch Editor
+        autoSwitchToTableEditorRadioButton.setEnabled( defaultEditorTemplateRadioButton.getSelection()
+            && autoSwitchToOtherEditorCheckbox.getSelection() );
+        autoSwitchToLDIFEditorRadioButton.setEnabled( defaultEditorTemplateRadioButton.getSelection()
+            && autoSwitchToOtherEditorCheckbox.getSelection() );
+        if ( autoSwitchEditor == CombinedEditorPluginConstants.PREF_AUTO_SWITCH_EDITOR_TABLE )
+        {
+            autoSwitchToTableEditorRadioButton.setSelection( true );
+            autoSwitchToLDIFEditorRadioButton.setSelection( false );
+        }
+        else if ( autoSwitchEditor == CombinedEditorPluginConstants.PREF_AUTO_SWITCH_EDITOR_LDIF )
+        {
+            autoSwitchToTableEditorRadioButton.setSelection( false );
+            autoSwitchToLDIFEditorRadioButton.setSelection( true );
+        }
+        autoSwitchLabel.setEnabled( defaultEditorTemplateRadioButton.getSelection() );
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public boolean performOk()
+    {
+        // Default Editor
+        if ( defaultEditorTemplateRadioButton.getSelection() )
+        {
+            store.setValue( CombinedEditorPluginConstants.PREF_DEFAULT_EDITOR,
+                CombinedEditorPluginConstants.PREF_DEFAULT_EDITOR_TEMPLATE );
+        }
+        else if ( defaultEditorTableRadioButton.getSelection() )
+        {
+            store.setValue( CombinedEditorPluginConstants.PREF_DEFAULT_EDITOR,
+                CombinedEditorPluginConstants.PREF_DEFAULT_EDITOR_TABLE );
+        }
+        else if ( defaultEditorLDIFRadioButton.getSelection() )
+        {
+            store.setValue( CombinedEditorPluginConstants.PREF_DEFAULT_EDITOR,
+                CombinedEditorPluginConstants.PREF_DEFAULT_EDITOR_LDIF );
+        }
+
+        if ( defaultEditorTemplateRadioButton.getSelection() )
+        {
+            store.setValue( CombinedEditorPluginConstants.PREF_DEFAULT_EDITOR,
+                CombinedEditorPluginConstants.PREF_DEFAULT_EDITOR_TEMPLATE );
+        }
+
+        // Auto Switch
+        store.setValue( CombinedEditorPluginConstants.PREF_AUTO_SWITCH_TO_ANOTHER_EDITOR,
+            autoSwitchToOtherEditorCheckbox.getSelection() );
+
+        // Auto Switch Editor
+        if ( autoSwitchToTableEditorRadioButton.getSelection() )
+        {
+            store.setValue( CombinedEditorPluginConstants.PREF_AUTO_SWITCH_EDITOR,
+                CombinedEditorPluginConstants.PREF_DEFAULT_EDITOR_TEMPLATE );
+        }
+        else if ( autoSwitchToLDIFEditorRadioButton.getSelection() )
+        {
+            store.setValue( CombinedEditorPluginConstants.PREF_AUTO_SWITCH_EDITOR,
+                CombinedEditorPluginConstants.PREF_DEFAULT_EDITOR_TABLE );
+        }
+
+        return true;
+    }
+}

Added: directory/studio/trunk/plugins/combinededitor/src/main/java/org/apache/directory/studio/combinededitor/preferences/Messages.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/plugins/combinededitor/src/main/java/org/apache/directory/studio/combinededitor/preferences/Messages.java?rev=1670296&view=auto
==============================================================================
--- directory/studio/trunk/plugins/combinededitor/src/main/java/org/apache/directory/studio/combinededitor/preferences/Messages.java (added)
+++ directory/studio/trunk/plugins/combinededitor/src/main/java/org/apache/directory/studio/combinededitor/preferences/Messages.java Tue Mar 31 09:56:35 2015
@@ -0,0 +1,31 @@
+package org.apache.directory.studio.combinededitor.preferences;
+
+
+import java.util.MissingResourceException;
+import java.util.ResourceBundle;
+
+
+public class Messages
+{
+    private static final String BUNDLE_NAME = "org.apache.directory.studio.combinededitor.preferences.messages"; //$NON-NLS-1$
+
+    private static final ResourceBundle RESOURCE_BUNDLE = ResourceBundle.getBundle( BUNDLE_NAME );
+
+
+    private Messages()
+    {
+    }
+
+
+    public static String getString( String key )
+    {
+        try
+        {
+            return RESOURCE_BUNDLE.getString( key );
+        }
+        catch ( MissingResourceException e )
+        {
+            return '!' + key + '!';
+        }
+    }
+}

Added: directory/studio/trunk/plugins/combinededitor/src/main/java/org/apache/directory/studio/combinededitor/preferences/messages.properties
URL: http://svn.apache.org/viewvc/directory/studio/trunk/plugins/combinededitor/src/main/java/org/apache/directory/studio/combinededitor/preferences/messages.properties?rev=1670296&view=auto
==============================================================================
--- directory/studio/trunk/plugins/combinededitor/src/main/java/org/apache/directory/studio/combinededitor/preferences/messages.properties (added)
+++ directory/studio/trunk/plugins/combinededitor/src/main/java/org/apache/directory/studio/combinededitor/preferences/messages.properties Tue Mar 31 09:56:35 2015
@@ -0,0 +1,7 @@
+CombinedEntryEditorPreferencePage.AutoSwitchNote=Note: When this option is enabled, the editor automatically switches to the\ntab of your choice if the given entry does not match any enabled template.
+CombinedEntryEditorPreferencePage.AutoSwitchToFollowingTabNoTemplateAvailable=Auto switch to the following tab if no template is available:
+CombinedEntryEditorPreferencePage.LDIFEditor=LDIF Editor
+CombinedEntryEditorPreferencePage.TableEditor=Table Editor
+CombinedEntryEditorPreferencePage.TemplateEditor=Template Editor
+CombinedEntryEditorPreferencePage.UseAsDefaultEditor=Use as default editor (tab):
+CombinedEntryEditorPreferencePage.PrefPageDescription=General settings for the Combined Entry Editor:

Added: directory/studio/trunk/plugins/combinededitor/src/main/java/org/apache/directory/studio/combinededitor/preferences/messages_de.properties
URL: http://svn.apache.org/viewvc/directory/studio/trunk/plugins/combinededitor/src/main/java/org/apache/directory/studio/combinededitor/preferences/messages_de.properties?rev=1670296&view=auto
==============================================================================
--- directory/studio/trunk/plugins/combinededitor/src/main/java/org/apache/directory/studio/combinededitor/preferences/messages_de.properties (added)
+++ directory/studio/trunk/plugins/combinededitor/src/main/java/org/apache/directory/studio/combinededitor/preferences/messages_de.properties Tue Mar 31 09:56:35 2015
@@ -0,0 +1,7 @@
+CombinedEntryEditorPreferencePage.AutoSwitchNote=Wenn diese Option aktiviert ist schaltet der Editor automatisch zum\nausgew\u00E4hlten Tab, falls kein passendes Template verf\u00FCgbar ist.
+CombinedEntryEditorPreferencePage.AutoSwitchToFollowingTabNoTemplateAvailable=Automatisch zu folgendem Tab umschalten, falls kein passendes Templat verf\u00FCgbar ist.
+CombinedEntryEditorPreferencePage.LDIFEditor=LDIF-Editor
+CombinedEntryEditorPreferencePage.TableEditor=Tabellen-Editor
+CombinedEntryEditorPreferencePage.TemplateEditor=Template-Editor
+CombinedEntryEditorPreferencePage.UseAsDefaultEditor=Als Standard Editor verwenden (Tab):
+CombinedEntryEditorPreferencePage.PrefPageDescription=Allgemeine Einstellungen des kombinierten Eintrags-Editors:

Added: directory/studio/trunk/plugins/combinededitor/src/main/java/org/apache/directory/studio/combinededitor/preferences/messages_fr.properties
URL: http://svn.apache.org/viewvc/directory/studio/trunk/plugins/combinededitor/src/main/java/org/apache/directory/studio/combinededitor/preferences/messages_fr.properties?rev=1670296&view=auto
==============================================================================
--- directory/studio/trunk/plugins/combinededitor/src/main/java/org/apache/directory/studio/combinededitor/preferences/messages_fr.properties (added)
+++ directory/studio/trunk/plugins/combinededitor/src/main/java/org/apache/directory/studio/combinededitor/preferences/messages_fr.properties Tue Mar 31 09:56:35 2015
@@ -0,0 +1,7 @@
+CombinedEntryEditorPreferencePage.AutoSwitchNote=Note: Lorsque cette option est activée, l'éditeur bascule automatiquement vers\nl'onglet de votre choix si aucun modèle ne correspond à l'entrée donnée.
+CombinedEntryEditorPreferencePage.AutoSwitchToFollowingTabNoTemplateAvailable=Basculer automatiquement vers l'onglet suivant si aucun modèle n'est disponible:
+CombinedEntryEditorPreferencePage.LDIFEditor=Editeur LDIF
+CombinedEntryEditorPreferencePage.TableEditor=Editeur Tabulaire
+CombinedEntryEditorPreferencePage.TemplateEditor=Editeur Formaté
+CombinedEntryEditorPreferencePage.UseAsDefaultEditor=Utiliser comme éditeur (onglet) par défaut :
+CombinedEntryEditorPreferencePage.PrefPageDescription=Réglages généraux pour l'éditeur d'entrée combiné :