/*
* 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.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;
}
}