Package org.apache.directory.studio.ldapbrowser.common.dialogs.preferences

Source Code of org.apache.directory.studio.ldapbrowser.common.dialogs.preferences.TextFormatsPreferencePage

/*
*  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.ldapbrowser.common.BrowserCommonActivator;
import org.apache.directory.studio.ldapbrowser.common.BrowserCommonConstants;
import org.apache.directory.studio.ldapbrowser.common.widgets.BaseWidgetUtils;
import org.apache.directory.studio.ldapbrowser.common.widgets.BinaryEncodingInput;
import org.apache.directory.studio.ldapbrowser.common.widgets.FileEncodingInput;
import org.apache.directory.studio.ldapbrowser.common.widgets.LineSeparatorInput;
import org.apache.directory.studio.ldapbrowser.common.widgets.OptionsInput;
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.BrowserCoreConstants;
import org.apache.directory.studio.ldapbrowser.core.BrowserCorePlugin;
import org.eclipse.core.runtime.Preferences;
import org.eclipse.jface.preference.PreferencePage;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.ModifyEvent;
import org.eclipse.swt.events.ModifyListener;
import org.eclipse.swt.events.VerifyEvent;
import org.eclipse.swt.events.VerifyListener;
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.TabFolder;
import org.eclipse.swt.widgets.TabItem;
import org.eclipse.swt.widgets.Text;
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.IWorkbenchPreferencePage;


public class TextFormatsPreferencePage extends PreferencePage implements IWorkbenchPreferencePage,
    WidgetModifyListener, ModifyListener
{

    public static final String LDIF_TAB = "LDIF";

    public static final String CSV_TAB = "CSV";

    public static final String XLS_TAB = "XLS";

    public static final String TABLE_TAB = "TABLE";

    private Preferences coreStore = BrowserCorePlugin.getDefault().getPluginPreferences();

    private TabFolder tabFolder;

    private TabItem ldifTab;

    private TabItem tableTab;

    private TabItem csvTab;

    private TabItem xlsTab;

    private Text ldifLineLengthText;

    private Button ldifSpaceAfterColonButton;

    private LineSeparatorInput ldifLineSeparator;

    // private Button ldifSpaceBetweenRDNsButton;

    private OptionsInput tableAttributeDelimiterWidget;

    private OptionsInput tableValueDelimiterWidget;

    private OptionsInput tableQuoteWidget;

    private LineSeparatorInput tableLineSeparator;

    private BinaryEncodingInput tableBinaryEncodingWidget;

    private OptionsInput csvAttributeDelimiterWidget;

    private OptionsInput csvValueDelimiterWidget;

    private OptionsInput csvQuoteWidget;

    private LineSeparatorInput csvLineSeparator;

    private BinaryEncodingInput csvBinaryEncodingWidget;

    private FileEncodingInput csvEncodingWidget;

    private OptionsInput xlsValueDelimiterWidget;

    private OptionsInput xlsBinaryEncodingWidget;


    public TextFormatsPreferencePage()
    {
        super();
        super.setPreferenceStore( BrowserCommonActivator.getDefault().getPreferenceStore() );
        super.setDescription( "Settings for text formats" );
    }


    public void init( IWorkbench workbench )
    {
    }


    public void applyData( Object data )
    {
        if ( data != null && tabFolder != null )
        {
            if ( LDIF_TAB.equals( data ) )
            {
                tabFolder.setSelection( 0 );
            }
            else if ( TABLE_TAB.equals( data ) )
            {
                tabFolder.setSelection( 1 );
            }
            else if ( CSV_TAB.equals( data ) )
            {
                tabFolder.setSelection( 2 );
            }
            else if ( XLS_TAB.equals( data ) )
            {
                tabFolder.setSelection( 3 );
            }
        }
    }


    protected Control createContents( Composite parent )
    {
        BaseWidgetUtils.createSpacer( parent, 1 );
        tabFolder = new TabFolder( parent, SWT.TOP );

        createLdifTab();
        createTableTab();
        createCsvTab();
        createXlsTab();

        updateEnabled();
        validate();

        applyDialogFont( tabFolder );

        return tabFolder;
    }


    private void createTableTab()
    {

        tableTab = new TabItem( tabFolder, SWT.NONE );
        tableTab.setText( "CSV Copy" );

        Composite tableComposite = new Composite( tabFolder, SWT.NONE );
        tableComposite.setLayout( new GridLayout( 1, false ) );
        Composite tableInnerComposite = BaseWidgetUtils.createColumnContainer( tableComposite, 3, 1 );

        BaseWidgetUtils.createLabel( tableInnerComposite, "Select CSV copy format options:", 3 );
        BaseWidgetUtils.createSpacer( tableInnerComposite, 3 );

        tableAttributeDelimiterWidget = new OptionsInput( "Attribute Delimiter", "Tabulator (\\t)", "\t", new String[]
            { "Tabulator (\\t)", "Comma (,)", "Semikolon (;)" }, new String[]
            { "\t", ",", ";" }, getPreferenceStore().getString(
                BrowserCommonConstants.PREFERENCE_FORMAT_TABLE_ATTRIBUTEDELIMITER ), false, true );
        tableAttributeDelimiterWidget.createWidget( tableInnerComposite );
        tableAttributeDelimiterWidget.addWidgetModifyListener( this );

        tableValueDelimiterWidget = new OptionsInput( "Value Delimiter", "Pipe (|)", "|", new String[]
            { "Pipe (|)", "Comma (,)", "Semikolon (;)", "Newline (\\n)" }, new String[]
            { "|", ",", ";", "\n" }, getPreferenceStore().getString(
                BrowserCommonConstants.PREFERENCE_FORMAT_TABLE_VALUEDELIMITER ), false, true );
        tableValueDelimiterWidget.createWidget( tableInnerComposite );
        tableValueDelimiterWidget.addWidgetModifyListener( this );

        tableQuoteWidget = new OptionsInput( "Quote Character", "Double Quote (\")", "\"", new String[]
            { "Double Quote (\")", "Single Quote (')" }, new String[]
            { "\"", "'" }, getPreferenceStore().getString( BrowserCommonConstants.PREFERENCE_FORMAT_TABLE_QUOTECHARACTER ),
            false, true );
        tableQuoteWidget.createWidget( tableInnerComposite );
        tableQuoteWidget.addWidgetModifyListener( this );

        tableLineSeparator = new LineSeparatorInput( getPreferenceStore().getString(
            BrowserCommonConstants.PREFERENCE_FORMAT_TABLE_LINESEPARATOR ), false );
        tableLineSeparator.createWidget( tableInnerComposite );
        tableLineSeparator.addWidgetModifyListener( this );

        tableBinaryEncodingWidget = new BinaryEncodingInput( getPreferenceStore().getString(
            BrowserCommonConstants.PREFERENCE_FORMAT_TABLE_BINARYENCODING ), false );
        tableBinaryEncodingWidget.createWidget( tableInnerComposite );
        tableBinaryEncodingWidget.addWidgetModifyListener( this );

        Composite copyTableHintComposite = BaseWidgetUtils.createColumnContainer( tableInnerComposite, 3, 3 );
        BaseWidgetUtils.createWrappedLabeledText( copyTableHintComposite,
            "Hint: The default settings are suitable to paste the copied data into Excel or OpenOffice.", 1 );

        tableTab.setControl( tableComposite );
    }


    private void createCsvTab()
    {

        csvTab = new TabItem( tabFolder, SWT.NONE );
        csvTab.setText( "CSV Export" );

        Composite csvComposite = new Composite( tabFolder, SWT.NONE );
        csvComposite.setLayout( new GridLayout( 1, false ) );
        Composite csvInnerComposite = BaseWidgetUtils.createColumnContainer( csvComposite, 3, 1 );

        BaseWidgetUtils.createLabel( csvInnerComposite, "Select CSV export file format options:", 3 );
        BaseWidgetUtils.createSpacer( csvInnerComposite, 3 );

        csvAttributeDelimiterWidget = new OptionsInput( "Attribute Delimiter", "Comma (,)", ",", new String[]
            { "Comma (,)", "Semikolon (;)", "Tabulator (\\t)" }, new String[]
            { ",", ";", "\t" }, coreStore.getString( BrowserCoreConstants.PREFERENCE_FORMAT_CSV_ATTRIBUTEDELIMITER ),
            false, true );
        csvAttributeDelimiterWidget.createWidget( csvInnerComposite );
        csvAttributeDelimiterWidget.addWidgetModifyListener( this );

        csvValueDelimiterWidget = new OptionsInput( "Value Delimiter", "Pipe (|)", "|", new String[]
            { "Pipe (|)", "Comma (,)", "Semikolon (;)", "Newline (\\n)" }, new String[]
            { "|", ",", ";", "\n" }, coreStore.getString( BrowserCoreConstants.PREFERENCE_FORMAT_CSV_VALUEDELIMITER ),
            false, true );
        csvValueDelimiterWidget.createWidget( csvInnerComposite );
        csvValueDelimiterWidget.addWidgetModifyListener( this );

        csvQuoteWidget = new OptionsInput( "Quote Character", "Double Quote (\")", "\"", new String[]
            { "Double Quote (\")", "Single Quote (')" }, new String[]
            { "\"", "'" }, coreStore.getString( BrowserCoreConstants.PREFERENCE_FORMAT_CSV_QUOTECHARACTER ), false,
            true );
        csvQuoteWidget.createWidget( csvInnerComposite );
        csvQuoteWidget.addWidgetModifyListener( this );

        csvLineSeparator = new LineSeparatorInput( coreStore
            .getString( BrowserCoreConstants.PREFERENCE_FORMAT_CSV_LINESEPARATOR ), false );
        csvLineSeparator.createWidget( csvInnerComposite );
        csvLineSeparator.addWidgetModifyListener( this );

        csvBinaryEncodingWidget = new BinaryEncodingInput( coreStore
            .getString( BrowserCoreConstants.PREFERENCE_FORMAT_CSV_BINARYENCODING ), false );
        csvBinaryEncodingWidget.createWidget( csvInnerComposite );
        csvBinaryEncodingWidget.addWidgetModifyListener( this );

        csvEncodingWidget = new FileEncodingInput( coreStore
            .getString( BrowserCoreConstants.PREFERENCE_FORMAT_CSV_ENCODING ), false );
        csvEncodingWidget.createWidget( csvInnerComposite );
        csvEncodingWidget.addWidgetModifyListener( this );

        csvTab.setControl( csvComposite );
    }


    private void createXlsTab()
    {

        xlsTab = new TabItem( tabFolder, SWT.NONE );
        xlsTab.setText( "Excel Export" );

        Composite xlsComposite = new Composite( tabFolder, SWT.NONE );
        xlsComposite.setLayout( new GridLayout( 1, false ) );
        Composite xlsInnerComposite = BaseWidgetUtils.createColumnContainer( xlsComposite, 3, 1 );

        BaseWidgetUtils.createWrappedLabeledText( xlsInnerComposite, "Select Excel export file format options:", 3 );
        BaseWidgetUtils.createSpacer( xlsInnerComposite, 3 );

        xlsValueDelimiterWidget = new OptionsInput( "Value Delimiter", "Pipe (|)", "|", new String[]
            { "Pipe (|)", "Comma (,)", "Semikolon (;)", "Newline (\\n)" }, new String[]
            { "|", ",", ";", "\n" }, coreStore.getString( BrowserCoreConstants.PREFERENCE_FORMAT_XLS_VALUEDELIMITER ),
            false, true );
        xlsValueDelimiterWidget.createWidget( xlsInnerComposite );
        xlsValueDelimiterWidget.addWidgetModifyListener( this );

        xlsBinaryEncodingWidget = new BinaryEncodingInput( coreStore
            .getString( BrowserCoreConstants.PREFERENCE_FORMAT_XLS_BINARYENCODING ), false );
        xlsBinaryEncodingWidget.createWidget( xlsInnerComposite );
        xlsBinaryEncodingWidget.addWidgetModifyListener( this );

        xlsTab.setControl( xlsComposite );
    }


    private void createLdifTab()
    {

        ldifTab = new TabItem( tabFolder, SWT.NONE );
        ldifTab.setText( "LDIF" );

        Composite ldifComposite = new Composite( tabFolder, SWT.NONE );
        ldifComposite.setLayout( new GridLayout( 1, false ) );
        Composite ldifInnerComposite = BaseWidgetUtils.createColumnContainer( ldifComposite, 1, 1 );

        BaseWidgetUtils.createLabel( ldifInnerComposite, "Select LDIF format options:", 1 );
        BaseWidgetUtils.createSpacer( ldifInnerComposite, 1 );

        ldifLineSeparator = new LineSeparatorInput( coreStore
            .getString( BrowserCoreConstants.PREFERENCE_LDIF_LINE_SEPARATOR ), true );
        ldifLineSeparator.createWidget( ldifInnerComposite );
        ldifLineSeparator.addWidgetModifyListener( this );

        BaseWidgetUtils.createSpacer( ldifInnerComposite, 1 );

        Composite lineLengthComposite = BaseWidgetUtils.createColumnContainer( ldifInnerComposite, 3, 1 );
        BaseWidgetUtils.createLabel( lineLengthComposite, "Line length:", 1 );
        ldifLineLengthText = BaseWidgetUtils.createText( lineLengthComposite, "", 3, 1 );
        ldifLineLengthText.setText( coreStore.getString( BrowserCoreConstants.PREFERENCE_LDIF_LINE_WIDTH ) );
        ldifLineLengthText.addVerifyListener( new VerifyListener()
        {
            public void verifyText( VerifyEvent e )
            {
                if ( !e.text.matches( "[0-9]*" ) )
                {
                    e.doit = false;
                }
                if ( "".equals( ldifLineLengthText.getText() ) && e.text.matches( "[0]" ) )
                {
                    e.doit = false;
                }
            }
        } );
        ldifLineLengthText.addModifyListener( this );
        BaseWidgetUtils.createLabel( lineLengthComposite, "characters", 1 );

        ldifSpaceAfterColonButton = BaseWidgetUtils.createCheckbox( ldifInnerComposite, "Space after colon", 1 );
        ldifSpaceAfterColonButton.setSelection( coreStore
            .getBoolean( BrowserCoreConstants.PREFERENCE_LDIF_SPACE_AFTER_COLON ) );

        // ldifSpaceBetweenRDNsButton =
        // BaseWidgetUtils.createCheckbox(ldifComposite, "Space between RDNs",
        // 1);
        // ldifSpaceBetweenRDNsButton.setSelection(coreStore.getBoolean(BrowserCoreConstants.PREFERENCE_LDIF_SPACE_BETWEEN_RDNS));

        ldifTab.setControl( ldifComposite );
    }


    private void updateEnabled()
    {

    }


    public boolean performOk()
    {

        coreStore.setValue( BrowserCoreConstants.PREFERENCE_LDIF_LINE_WIDTH, this.ldifLineLengthText.getText() );
        coreStore.setValue( BrowserCoreConstants.PREFERENCE_LDIF_LINE_SEPARATOR, this.ldifLineSeparator.getRawValue() );
        coreStore.setValue( BrowserCoreConstants.PREFERENCE_LDIF_SPACE_AFTER_COLON, this.ldifSpaceAfterColonButton
            .getSelection() );
        // coreStore.setValue(BrowserCoreConstants.PREFERENCE_LDIF_SPACE_BETWEEN_RDNS,
        // this.ldifSpaceBetweenRDNsButton.getSelection());
        BrowserCorePlugin.getDefault().savePluginPreferences();

        coreStore.setValue( BrowserCoreConstants.PREFERENCE_FORMAT_CSV_ATTRIBUTEDELIMITER,
            this.csvAttributeDelimiterWidget.getRawValue() );
        coreStore.setValue( BrowserCoreConstants.PREFERENCE_FORMAT_CSV_VALUEDELIMITER, this.csvValueDelimiterWidget
            .getRawValue() );
        coreStore.setValue( BrowserCoreConstants.PREFERENCE_FORMAT_CSV_QUOTECHARACTER, this.csvQuoteWidget
            .getRawValue() );
        coreStore.setValue( BrowserCoreConstants.PREFERENCE_FORMAT_CSV_LINESEPARATOR, this.csvLineSeparator
            .getRawValue() );
        coreStore.setValue( BrowserCoreConstants.PREFERENCE_FORMAT_CSV_BINARYENCODING, this.csvBinaryEncodingWidget
            .getRawValue() );
        coreStore.setValue( BrowserCoreConstants.PREFERENCE_FORMAT_CSV_ENCODING, this.csvEncodingWidget.getRawValue() );

        getPreferenceStore().setValue( BrowserCommonConstants.PREFERENCE_FORMAT_TABLE_ATTRIBUTEDELIMITER,
            this.tableAttributeDelimiterWidget.getRawValue() );
        getPreferenceStore().setValue( BrowserCommonConstants.PREFERENCE_FORMAT_TABLE_VALUEDELIMITER,
            this.tableValueDelimiterWidget.getRawValue() );
        getPreferenceStore().setValue( BrowserCommonConstants.PREFERENCE_FORMAT_TABLE_QUOTECHARACTER,
            this.tableQuoteWidget.getRawValue() );
        getPreferenceStore().setValue( BrowserCommonConstants.PREFERENCE_FORMAT_TABLE_LINESEPARATOR,
            this.tableLineSeparator.getRawValue() );
        getPreferenceStore().setValue( BrowserCommonConstants.PREFERENCE_FORMAT_TABLE_BINARYENCODING,
            this.tableBinaryEncodingWidget.getRawValue() );

        coreStore.setValue( BrowserCoreConstants.PREFERENCE_FORMAT_XLS_VALUEDELIMITER, this.xlsValueDelimiterWidget
            .getRawValue() );
        coreStore.setValue( BrowserCoreConstants.PREFERENCE_FORMAT_XLS_BINARYENCODING, this.xlsBinaryEncodingWidget
            .getRawValue() );

        updateEnabled();
        validate();

        return true;
    }


    protected void performDefaults()
    {

        this.ldifLineLengthText.setText( coreStore.getDefaultString( BrowserCoreConstants.PREFERENCE_LDIF_LINE_WIDTH ) );
        this.ldifLineSeparator.setRawValue( coreStore
            .getDefaultString( BrowserCoreConstants.PREFERENCE_LDIF_LINE_SEPARATOR ) );
        this.ldifSpaceAfterColonButton.setSelection( coreStore
            .getDefaultBoolean( BrowserCoreConstants.PREFERENCE_LDIF_SPACE_AFTER_COLON ) );
        // this.ldifSpaceBetweenRDNsButton.setSelection(coreStore.getDefaultBoolean(BrowserCoreConstants.PREFERENCE_LDIF_SPACE_BETWEEN_RDNS));

        this.csvAttributeDelimiterWidget.setRawValue( coreStore
            .getDefaultString( BrowserCoreConstants.PREFERENCE_FORMAT_CSV_ATTRIBUTEDELIMITER ) );
        this.csvValueDelimiterWidget.setRawValue( coreStore
            .getDefaultString( BrowserCoreConstants.PREFERENCE_FORMAT_CSV_VALUEDELIMITER ) );
        this.csvQuoteWidget.setRawValue( coreStore
            .getDefaultString( BrowserCoreConstants.PREFERENCE_FORMAT_CSV_QUOTECHARACTER ) );
        this.csvLineSeparator.setRawValue( coreStore
            .getDefaultString( BrowserCoreConstants.PREFERENCE_FORMAT_CSV_LINESEPARATOR ) );
        this.csvBinaryEncodingWidget.setRawValue( coreStore
            .getDefaultString( BrowserCoreConstants.PREFERENCE_FORMAT_CSV_BINARYENCODING ) );
        this.csvEncodingWidget.setRawValue( coreStore
            .getDefaultString( BrowserCoreConstants.PREFERENCE_FORMAT_CSV_ENCODING ) );

        this.tableAttributeDelimiterWidget.setRawValue( getPreferenceStore().getDefaultString(
            BrowserCommonConstants.PREFERENCE_FORMAT_TABLE_ATTRIBUTEDELIMITER ) );
        this.tableValueDelimiterWidget.setRawValue( getPreferenceStore().getDefaultString(
            BrowserCommonConstants.PREFERENCE_FORMAT_TABLE_VALUEDELIMITER ) );
        this.tableQuoteWidget.setRawValue( getPreferenceStore().getDefaultString(
            BrowserCommonConstants.PREFERENCE_FORMAT_TABLE_QUOTECHARACTER ) );
        this.tableLineSeparator.setRawValue( getPreferenceStore().getDefaultString(
            BrowserCommonConstants.PREFERENCE_FORMAT_TABLE_LINESEPARATOR ) );
        this.tableBinaryEncodingWidget.setRawValue( getPreferenceStore().getDefaultString(
            BrowserCommonConstants.PREFERENCE_FORMAT_TABLE_BINARYENCODING ) );

        this.xlsValueDelimiterWidget.setRawValue( coreStore
            .getDefaultString( BrowserCoreConstants.PREFERENCE_FORMAT_XLS_VALUEDELIMITER ) );
        this.xlsBinaryEncodingWidget.setRawValue( coreStore
            .getDefaultString( BrowserCoreConstants.PREFERENCE_FORMAT_XLS_BINARYENCODING ) );

        updateEnabled();
        validate();

        super.performDefaults();
    }


    public void widgetModified( WidgetModifyEvent event )
    {
        updateEnabled();
        validate();
    }


    public void modifyText( ModifyEvent e )
    {
        updateEnabled();
        validate();
    }


    protected void validate()
    {
        setValid( !"".equals( csvAttributeDelimiterWidget.getRawValue() )
            && !"".equals( csvValueDelimiterWidget.getRawValue() ) && !"".equals( csvQuoteWidget.getRawValue() )
            && !"".equals( csvLineSeparator.getRawValue() ) && !"".equals( csvBinaryEncodingWidget.getRawValue() )
            && !"".equals( csvEncodingWidget.getRawValue() ) &&

            !"".equals( tableAttributeDelimiterWidget.getRawValue() )
            && !"".equals( tableValueDelimiterWidget.getRawValue() ) && !"".equals( tableQuoteWidget.getRawValue() )
            && !"".equals( tableLineSeparator.getRawValue() ) && !"".equals( tableBinaryEncodingWidget.getRawValue() )
            &&

            !"".equals( xlsValueDelimiterWidget.getRawValue() ) && !"".equals( xlsBinaryEncodingWidget.getRawValue() )
            &&

            !"".equals( ldifLineLengthText.getText() ) && !"".equals( ldifLineSeparator.getRawValue() ) );
    }

}
TOP

Related Classes of org.apache.directory.studio.ldapbrowser.common.dialogs.preferences.TextFormatsPreferencePage

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.