/*
* 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.ldifeditor.dialogs.preferences;
import org.apache.directory.studio.common.ui.widgets.BaseWidgetUtils;
import org.apache.directory.studio.ldifeditor.LdifEditorActivator;
import org.apache.directory.studio.ldifeditor.LdifEditorConstants;
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.swt.widgets.Link;
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.IWorkbenchPreferencePage;
import org.eclipse.ui.dialogs.PreferencesUtil;
/**
* The main preference page of the LDIF editor.
*
* @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
*/
public class LdifEditorPreferencePage extends PreferencePage implements IWorkbenchPreferencePage
{
// private Button autoWrapButton;
/** The enable folding button. */
private Button enableFoldingButton;
/** The initially fold label. */
private Label initiallyFoldLabel;
/** The initially fold comments button. */
private Button initiallyFoldCommentsButton;
/** The initially fold records button. */
private Button initiallyFoldRecordsButton;
/** The initially fold wrapped lines button. */
private Button initiallyFoldWrappedLinesButton;
/** The use ldif double click button. */
private Button useLdifDoubleClickButton;
/** The update if entry exists button. */
private Button updateIfEntryExistsButton;
/** The continue on error button. */
private Button continueOnErrorButton;
/**
* Creates a new instance of LdifEditorPreferencePage.
*/
public LdifEditorPreferencePage()
{
super( Messages.getString( "LdifEditorPreferencePage.LDIFEditor" ) ); //$NON-NLS-1$
super.setPreferenceStore( LdifEditorActivator.getDefault().getPreferenceStore() );
}
/**
* {@inheritDoc}
*/
public void init( IWorkbench workbench )
{
}
/**
* {@inheritDoc}
*/
protected Control createContents( Composite parent )
{
Composite composite = new Composite( parent, SWT.NONE );
GridLayout layout = new GridLayout( 1, false );
layout.marginWidth = 0;
layout.marginHeight = 0;
layout.marginLeft = 0;
layout.marginRight = 0;
layout.marginTop = 0;
layout.marginBottom = 0;
composite.setLayout( layout );
composite.setLayoutData( new GridData( GridData.FILL_HORIZONTAL ) );
String text = Messages.getString( "LdifEditorPreferencePage.LinkToTextEditors" ); //$NON-NLS-1$
Link link = BaseWidgetUtils.createLink( composite, text, 1 );
link.addSelectionListener( new SelectionAdapter()
{
public void widgetSelected( SelectionEvent e )
{
PreferencesUtil.createPreferenceDialogOn( getShell(),
"org.eclipse.ui.preferencePages.GeneralTextEditor", null, null ); //$NON-NLS-1$
}
} );
String text2 = Messages.getString( "LdifEditorPreferencePage.LinkToTextFormats" ); //$NON-NLS-1$
Link link2 = BaseWidgetUtils.createLink( composite, text2, 1 );
link2.addSelectionListener( new SelectionAdapter()
{
public void widgetSelected( SelectionEvent e )
{
PreferencesUtil.createPreferenceDialogOn( getShell(), LdifEditorConstants.PREFERENCEPAGEID_TEXTFORMATS,
null, null ); //$NON-NLS-1$
}
} );
BaseWidgetUtils.createSpacer( composite, 1 );
BaseWidgetUtils.createSpacer( composite, 1 );
Group foldGroup = BaseWidgetUtils.createGroup( BaseWidgetUtils.createColumnContainer( composite, 1, 1 ),
Messages.getString( "LdifEditorPreferencePage.Folding" ), 1 ); //$NON-NLS-1$
enableFoldingButton = BaseWidgetUtils.createCheckbox( foldGroup, Messages
.getString( "LdifEditorPreferencePage.EnableFolding" ), 1 ); //$NON-NLS-1$
enableFoldingButton.setSelection( getPreferenceStore().getBoolean(
LdifEditorConstants.PREFERENCE_LDIFEDITOR_FOLDING_ENABLE ) );
enableFoldingButton.addSelectionListener( new SelectionAdapter()
{
public void widgetSelected( SelectionEvent e )
{
checkEnabled();
}
} );
Composite initiallyFoldComposiste = BaseWidgetUtils.createColumnContainer( foldGroup, 4, 1 );
initiallyFoldLabel = BaseWidgetUtils.createLabel( initiallyFoldComposiste, Messages
.getString( "LdifEditorPreferencePage.InitiallyFold" ), 1 ); //$NON-NLS-1$
initiallyFoldCommentsButton = BaseWidgetUtils.createCheckbox( initiallyFoldComposiste, Messages
.getString( "LdifEditorPreferencePage.Comments" ), 1 ); //$NON-NLS-1$
initiallyFoldCommentsButton.setSelection( getPreferenceStore().getBoolean(
LdifEditorConstants.PREFERENCE_LDIFEDITOR_FOLDING_INITIALLYFOLDCOMMENTS ) );
initiallyFoldRecordsButton = BaseWidgetUtils.createCheckbox( initiallyFoldComposiste, Messages
.getString( "LdifEditorPreferencePage.Records" ), 1 ); //$NON-NLS-1$
initiallyFoldRecordsButton.setSelection( getPreferenceStore().getBoolean(
LdifEditorConstants.PREFERENCE_LDIFEDITOR_FOLDING_INITIALLYFOLDRECORDS ) );
initiallyFoldWrappedLinesButton = BaseWidgetUtils.createCheckbox( initiallyFoldComposiste, Messages
.getString( "LdifEditorPreferencePage.WrappedLines" ), 1 ); //$NON-NLS-1$
initiallyFoldWrappedLinesButton.setSelection( getPreferenceStore().getBoolean(
LdifEditorConstants.PREFERENCE_LDIFEDITOR_FOLDING_INITIALLYFOLDWRAPPEDLINES ) );
BaseWidgetUtils.createSpacer( composite, 1 );
Group doubleClickGroup = BaseWidgetUtils.createGroup( BaseWidgetUtils.createColumnContainer( composite, 1, 1 ),
Messages.getString( "LdifEditorPreferencePage.DoubleClickBehaviour" ), 1 ); //$NON-NLS-1$
useLdifDoubleClickButton = BaseWidgetUtils.createCheckbox( doubleClickGroup, Messages
.getString( "LdifEditorPreferencePage.SelectWholeAttributeOnDoubleClick" ), 1 ); //$NON-NLS-1$
useLdifDoubleClickButton.setSelection( getPreferenceStore().getBoolean(
LdifEditorConstants.PREFERENCE_LDIFEDITOR_DOUBLECLICK_USELDIFDOUBLECLICK ) );
BaseWidgetUtils.createSpacer( composite, 1 );
// Options
Group optionsGroup = BaseWidgetUtils.createGroup( BaseWidgetUtils.createColumnContainer( composite, 1, 1 ),
Messages.getString( "LdifEditorPreferencePage.ExecuteOptions" ), 1 ); //$NON-NLS-1$
updateIfEntryExistsButton = BaseWidgetUtils.createCheckbox( optionsGroup, Messages
.getString( "LdifEditorPreferencePage.UpdateExistingEntries" ), 1 ); //$NON-NLS-1$
updateIfEntryExistsButton.setToolTipText( Messages
.getString( "LdifEditorPreferencePage.UpdateExistingEntriesToolTip1" ) //$NON-NLS-1$
+ Messages.getString( "LdifEditorPreferencePage.UpdateExistingEntriesToolTip2" ) ); //$NON-NLS-1$
updateIfEntryExistsButton.setSelection( getPreferenceStore().getBoolean(
LdifEditorConstants.PREFERENCE_LDIFEDITOR_OPTIONS_UPDATEIFENTRYEXISTS ) );
continueOnErrorButton = BaseWidgetUtils.createCheckbox( optionsGroup, Messages
.getString( "LdifEditorPreferencePage.ContinueOnError" ), 1 ); //$NON-NLS-1$
continueOnErrorButton.setSelection( getPreferenceStore().getBoolean(
LdifEditorConstants.PREFERENCE_LDIFEDITOR_OPTIONS_CONTINUEONERROR ) );
checkEnabled();
return composite;
}
/**
* Enables/disables widgets dependent if options are selected.
*/
private void checkEnabled()
{
initiallyFoldLabel.setEnabled( enableFoldingButton.getSelection() );
initiallyFoldCommentsButton.setEnabled( enableFoldingButton.getSelection() );
initiallyFoldRecordsButton.setEnabled( enableFoldingButton.getSelection() );
initiallyFoldWrappedLinesButton.setEnabled( enableFoldingButton.getSelection() );
}
/**
* {@inheritDoc}
*/
public boolean performOk()
{
getPreferenceStore().setValue( LdifEditorConstants.PREFERENCE_LDIFEDITOR_FOLDING_ENABLE,
enableFoldingButton.getSelection() );
getPreferenceStore().setValue( LdifEditorConstants.PREFERENCE_LDIFEDITOR_FOLDING_INITIALLYFOLDCOMMENTS,
initiallyFoldCommentsButton.getSelection() );
getPreferenceStore().setValue( LdifEditorConstants.PREFERENCE_LDIFEDITOR_FOLDING_INITIALLYFOLDRECORDS,
initiallyFoldRecordsButton.getSelection() );
getPreferenceStore().setValue( LdifEditorConstants.PREFERENCE_LDIFEDITOR_FOLDING_INITIALLYFOLDWRAPPEDLINES,
initiallyFoldWrappedLinesButton.getSelection() );
getPreferenceStore().setValue( LdifEditorConstants.PREFERENCE_LDIFEDITOR_DOUBLECLICK_USELDIFDOUBLECLICK,
useLdifDoubleClickButton.getSelection() );
getPreferenceStore().setValue( LdifEditorConstants.PREFERENCE_LDIFEDITOR_OPTIONS_UPDATEIFENTRYEXISTS,
updateIfEntryExistsButton.getSelection() );
getPreferenceStore().setValue( LdifEditorConstants.PREFERENCE_LDIFEDITOR_OPTIONS_CONTINUEONERROR,
continueOnErrorButton.getSelection() );
return true;
}
/**
* {@inheritDoc}
*/
protected void performDefaults()
{
enableFoldingButton.setSelection( getPreferenceStore().getDefaultBoolean(
LdifEditorConstants.PREFERENCE_LDIFEDITOR_FOLDING_ENABLE ) );
initiallyFoldCommentsButton.setSelection( getPreferenceStore().getDefaultBoolean(
LdifEditorConstants.PREFERENCE_LDIFEDITOR_FOLDING_INITIALLYFOLDCOMMENTS ) );
initiallyFoldRecordsButton.setSelection( getPreferenceStore().getDefaultBoolean(
LdifEditorConstants.PREFERENCE_LDIFEDITOR_FOLDING_INITIALLYFOLDRECORDS ) );
initiallyFoldWrappedLinesButton.setSelection( getPreferenceStore().getDefaultBoolean(
LdifEditorConstants.PREFERENCE_LDIFEDITOR_FOLDING_INITIALLYFOLDWRAPPEDLINES ) );
useLdifDoubleClickButton.setSelection( getPreferenceStore().getDefaultBoolean(
LdifEditorConstants.PREFERENCE_LDIFEDITOR_DOUBLECLICK_USELDIFDOUBLECLICK ) );
updateIfEntryExistsButton.setSelection( getPreferenceStore().getDefaultBoolean(
LdifEditorConstants.PREFERENCE_LDIFEDITOR_OPTIONS_UPDATEIFENTRYEXISTS ) );
continueOnErrorButton.setSelection( getPreferenceStore().getDefaultBoolean(
LdifEditorConstants.PREFERENCE_LDIFEDITOR_OPTIONS_CONTINUEONERROR ) );
super.performDefaults();
checkEnabled();
}
}