blob: 1d01707f2edbc1fb27de533e55b9b77700578b8b [file] [log] [blame]
/*
* 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.ldapbrowser.common.dialogs.preferences;
import org.apache.directory.studio.common.ui.widgets.BaseWidgetUtils;
import org.apache.directory.studio.ldapbrowser.common.BrowserCommonActivator;
import org.apache.directory.studio.ldapbrowser.common.BrowserCommonConstants;
import org.eclipse.jface.preference.PreferencePage;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.VerifyEvent;
import org.eclipse.swt.events.VerifyListener;
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.Text;
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.IWorkbenchPreferencePage;
/**
* The EntryEditorPreferencePage contains general settings for the entry editor.
*
* @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
*/
public class EntryEditorPreferencePage extends PreferencePage implements IWorkbenchPreferencePage
{
private Button autosaveSingleTabButton;
private Button autosaveMultiTabButton;
private Button enableFoldingButton;
private Label foldingThresholdLabel;
private Text foldingThresholdText;
private Button autoExpandFoldedAttributesButton;
/**
* Creates a new instance of EntryEditorPreferencePage.
*/
public EntryEditorPreferencePage()
{
super( Messages.getString( "EntryEditorPreferencePage.EntryEditor" ) ); //$NON-NLS-1$
super.setPreferenceStore( BrowserCommonActivator.getDefault().getPreferenceStore() );
super.setDescription( Messages.getString( "EntryEditorPreferencePage.GeneralSettings" ) ); //$NON-NLS-1$
}
/**
* {@inheritDoc}
*/
public void init( IWorkbench workbench )
{
}
/**
* {@inheritDoc}
*/
protected Control createContents( Composite parent )
{
Composite composite = BaseWidgetUtils.createColumnContainer( parent, 1, 1 );
BaseWidgetUtils.createSpacer( composite, 1 );
BaseWidgetUtils.createSpacer( composite, 1 );
String foldingTooltip = Messages.getString( "EntryEditorPreferencePage.FoldingToolTip" ); //$NON-NLS-1$
Group foldingGroup = BaseWidgetUtils.createGroup( BaseWidgetUtils.createColumnContainer( composite, 1, 1 ),
Messages.getString( "EntryEditorPreferencePage.Folding" ), 1 ); //$NON-NLS-1$
Composite pagingGroupComposite = BaseWidgetUtils.createColumnContainer( foldingGroup, 3, 1 );
enableFoldingButton = BaseWidgetUtils.createCheckbox( pagingGroupComposite, Messages
.getString( "EntryEditorPreferencePage.EnableFolding" ), 3 ); //$NON-NLS-1$
enableFoldingButton.setToolTipText( foldingTooltip );
enableFoldingButton.setSelection( getPreferenceStore().getBoolean(
BrowserCommonConstants.PREFERENCE_ENTRYEDITOR_ENABLE_FOLDING ) );
enableFoldingButton.addSelectionListener( new SelectionAdapter()
{
public void widgetSelected( SelectionEvent e )
{
updateEnabled();
}
} );
BaseWidgetUtils.createRadioIndent( pagingGroupComposite, 1 );
foldingThresholdLabel = BaseWidgetUtils.createLabel( pagingGroupComposite, Messages
.getString( "EntryEditorPreferencePage.FoldingThreshold" ), 1 ); //$NON-NLS-1$
foldingThresholdLabel.setToolTipText( foldingTooltip );
foldingThresholdLabel.setEnabled( enableFoldingButton.getSelection() );
foldingThresholdText = BaseWidgetUtils.createText( pagingGroupComposite, getPreferenceStore().getString(
BrowserCommonConstants.PREFERENCE_ENTRYEDITOR_FOLDING_THRESHOLD ), 4, 1 );
foldingThresholdText.setToolTipText( foldingTooltip );
foldingThresholdText.setEnabled( enableFoldingButton.getSelection() );
foldingThresholdText.addVerifyListener( new VerifyListener()
{
public void verifyText( VerifyEvent e )
{
if ( !e.text.matches( "[0-9]*" ) ) //$NON-NLS-1$
{
e.doit = false;
}
if ( "".equals( foldingThresholdText.getText() ) && e.text.matches( "[0]" ) ) //$NON-NLS-1$ //$NON-NLS-2$
{
e.doit = false;
}
}
} );
BaseWidgetUtils.createRadioIndent( pagingGroupComposite, 1 );
autoExpandFoldedAttributesButton = BaseWidgetUtils.createCheckbox( pagingGroupComposite, Messages
.getString( "EntryEditorPreferencePage.AutoExpandFoldedAttributes" ), 2 ); //$NON-NLS-1$
autoExpandFoldedAttributesButton.setEnabled( enableFoldingButton.getSelection() );
autoExpandFoldedAttributesButton.setSelection( getPreferenceStore().getBoolean(
BrowserCommonConstants.PREFERENCE_ENTRYEDITOR_AUTO_EXPAND_FOLDED_ATTRIBUTES ) );
BaseWidgetUtils.createSpacer( composite, 1 );
BaseWidgetUtils.createSpacer( composite, 1 );
Group autosaveGroup = BaseWidgetUtils.createGroup( BaseWidgetUtils.createColumnContainer( composite, 1, 1 ),
Messages.getString( "EntryEditorPreferencePage.Autosave" ), 1 ); //$NON-NLS-1$
Composite autosaveComposite = BaseWidgetUtils.createColumnContainer( autosaveGroup, 1, 1 );
autosaveSingleTabButton = BaseWidgetUtils.createCheckbox( autosaveComposite, Messages
.getString( "EntryEditorPreferencePage.AutosaveSingleTab" ), 1 ); //$NON-NLS-1$
autosaveSingleTabButton.setSelection( getPreferenceStore().getBoolean(
BrowserCommonConstants.PREFERENCE_ENTRYEDITOR_AUTOSAVE_SINGLE_TAB ) );
autosaveMultiTabButton = BaseWidgetUtils.createCheckbox( autosaveComposite, Messages
.getString( "EntryEditorPreferencePage.AutosaveMultiTab" ), 1 ); //$NON-NLS-1$
autosaveMultiTabButton.setSelection( getPreferenceStore().getBoolean(
BrowserCommonConstants.PREFERENCE_ENTRYEDITOR_AUTOSAVE_MULTI_TAB ) );
updateEnabled();
applyDialogFont( composite );
return composite;
}
private void updateEnabled()
{
foldingThresholdText.setEnabled( enableFoldingButton.getSelection() );
foldingThresholdLabel.setEnabled( enableFoldingButton.getSelection() );
autoExpandFoldedAttributesButton.setEnabled( enableFoldingButton.getSelection() );
}
/**
* {@inheritDoc}
*/
public boolean performOk()
{
getPreferenceStore().setValue( BrowserCommonConstants.PREFERENCE_ENTRYEDITOR_AUTOSAVE_SINGLE_TAB,
autosaveSingleTabButton.getSelection() );
getPreferenceStore().setValue( BrowserCommonConstants.PREFERENCE_ENTRYEDITOR_AUTOSAVE_MULTI_TAB,
autosaveMultiTabButton.getSelection() );
getPreferenceStore().setValue( BrowserCommonConstants.PREFERENCE_ENTRYEDITOR_ENABLE_FOLDING,
enableFoldingButton.getSelection() );
getPreferenceStore().setValue( BrowserCommonConstants.PREFERENCE_ENTRYEDITOR_FOLDING_THRESHOLD,
foldingThresholdText.getText() );
getPreferenceStore().setValue( BrowserCommonConstants.PREFERENCE_ENTRYEDITOR_AUTO_EXPAND_FOLDED_ATTRIBUTES,
autoExpandFoldedAttributesButton.getSelection() );
return true;
}
/**
* {@inheritDoc}
*/
protected void performDefaults()
{
autosaveSingleTabButton.setSelection( getPreferenceStore().getDefaultBoolean(
BrowserCommonConstants.PREFERENCE_ENTRYEDITOR_AUTOSAVE_SINGLE_TAB ) );
autosaveMultiTabButton.setSelection( getPreferenceStore().getDefaultBoolean(
BrowserCommonConstants.PREFERENCE_ENTRYEDITOR_AUTOSAVE_MULTI_TAB ) );
enableFoldingButton.setSelection( getPreferenceStore().getDefaultBoolean(
BrowserCommonConstants.PREFERENCE_ENTRYEDITOR_ENABLE_FOLDING ) );
foldingThresholdText.setText( getPreferenceStore().getDefaultString(
BrowserCommonConstants.PREFERENCE_ENTRYEDITOR_FOLDING_THRESHOLD ) );
autoExpandFoldedAttributesButton.setSelection( getPreferenceStore().getDefaultBoolean(
BrowserCommonConstants.PREFERENCE_ENTRYEDITOR_AUTO_EXPAND_FOLDED_ATTRIBUTES ) );
updateEnabled();
super.performDefaults();
}
}