org.apache.directory.studio.ldapbrowser.ui.dialogs.EncoderDecoderDialog.java Source code

Java tutorial

Introduction

Here is the source code for org.apache.directory.studio.ldapbrowser.ui.dialogs.EncoderDecoderDialog.java

Source

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

import org.apache.directory.studio.common.ui.widgets.BaseWidgetUtils;
import org.apache.directory.studio.ldifparser.LdifUtils;
import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.jface.dialogs.IDialogConstants;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.ModifyEvent;
import org.eclipse.swt.events.ModifyListener;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;

public class EncoderDecoderDialog extends Dialog {

    private Text iso88591Text;

    private Text iso88591HexText;

    private Text utf8Text;

    private Text utf8HexText;

    private Text base64Text;

    private Text errorText;

    private boolean inModify = false;

    public EncoderDecoderDialog(Shell parentShell) {
        super(parentShell);
        super.setShellStyle(super.getShellStyle() | SWT.RESIZE);
    }

    protected void configureShell(Shell shell) {
        super.configureShell(shell);
        shell.setText(Messages.getString("EncoderDecoderDialog.LDAPEncodeDecoder")); //$NON-NLS-1$
        //shell.setImage( BrowserUIPlugin.getDefault().getImage( BrowserUIConstants.IMG_IMAGEEDITOR ) );
    }

    protected Control createDialogArea(Composite parent) {

        Composite composite2 = (Composite) super.createDialogArea(parent);
        GridData gd1 = new GridData(GridData.FILL_BOTH);
        gd1.widthHint = convertHorizontalDLUsToPixels(IDialogConstants.MINIMUM_MESSAGE_AREA_WIDTH);
        gd1.heightHint = convertVerticalDLUsToPixels(IDialogConstants.MINIMUM_MESSAGE_AREA_WIDTH);
        composite2.setLayoutData(gd1);

        Composite composite = BaseWidgetUtils.createColumnContainer(composite2, 2, 1);
        composite.setLayoutData(new GridData(GridData.FILL_BOTH));

        Label iso8859Label = new Label(composite, SWT.NONE);
        iso8859Label.setText(Messages.getString("EncoderDecoderDialog.ISOColon")); //$NON-NLS-1$
        iso88591Text = new Text(composite, SWT.BORDER | SWT.V_SCROLL | SWT.H_SCROLL);
        GridData gd = new GridData(GridData.FILL_BOTH);
        iso88591Text.setLayoutData(gd);

        Label iso8859HexLabel = new Label(composite, SWT.NONE);
        iso8859HexLabel.setText(Messages.getString("EncoderDecoderDialog.ISOHex")); //$NON-NLS-1$
        iso88591HexText = new Text(composite, SWT.BORDER | SWT.READ_ONLY);
        iso88591HexText.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));

        Label utf8Label = new Label(composite, SWT.NONE);
        utf8Label.setText(Messages.getString("EncoderDecoderDialog.UTF")); //$NON-NLS-1$
        utf8Text = new Text(composite, SWT.BORDER);
        utf8Text.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));

        Label utf8HexLabel = new Label(composite, SWT.NONE);
        utf8HexLabel.setText(Messages.getString("EncoderDecoderDialog.UTFHex")); //$NON-NLS-1$
        utf8HexText = new Text(composite, SWT.BORDER | SWT.READ_ONLY);
        utf8HexText.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));

        Label base64Label = new Label(composite, SWT.NONE);
        base64Label.setText(Messages.getString("EncoderDecoderDialog.BASE")); //$NON-NLS-1$
        base64Text = new Text(composite, SWT.BORDER);
        base64Text.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));

        errorText = new Text(composite, SWT.BORDER | SWT.READ_ONLY);
        gd = new GridData(GridData.FILL_HORIZONTAL);
        gd.horizontalSpan = 2;
        errorText.setLayoutData(gd);

        iso88591Text.addModifyListener(new ModifyListener() {
            public void modifyText(ModifyEvent e) {
                if (!inModify) {
                    inModify = true;
                    try {
                        String isoString = iso88591Text.getText();
                        byte[] isoBytes = isoString.getBytes("ISO-8859-1"); //$NON-NLS-1$
                        String utf8String = new String(isoBytes, "UTF-8"); //$NON-NLS-1$

                        iso88591HexText.setText(LdifUtils.hexEncode(isoBytes));
                        utf8Text.setText(utf8String);
                        utf8HexText.setText(LdifUtils.hexEncode(utf8String.getBytes("UTF-8"))); //$NON-NLS-1$
                        base64Text.setText(LdifUtils.base64encode(isoBytes));
                        errorText.setText(""); //$NON-NLS-1$
                    } catch (Exception ex) {
                        errorText.setText(ex.getMessage());
                        ex.printStackTrace();
                    } finally {
                        inModify = false;
                    }
                }
            }
        });

        utf8Text.addModifyListener(new ModifyListener() {
            public void modifyText(ModifyEvent e) {
                if (!inModify) {
                    inModify = true;
                    try {
                        String utf8String = utf8Text.getText();
                        byte[] utf8Bytes = utf8String.getBytes("UTF-8"); //$NON-NLS-1$
                        String isoString = new String(utf8Bytes, "ISO-8859-1"); //$NON-NLS-1$

                        iso88591Text.setText(isoString);
                        iso88591HexText.setText(LdifUtils.hexEncode(isoString.getBytes("ISO-8859-1"))); //$NON-NLS-1$
                        utf8HexText.setText(LdifUtils.hexEncode(utf8Bytes));
                        base64Text.setText(LdifUtils.base64encode(utf8Bytes));
                        errorText.setText(""); //$NON-NLS-1$
                    } catch (Exception ex) {
                        errorText.setText(ex.getMessage());
                        ex.printStackTrace();
                    } finally {
                        inModify = false;
                    }
                }
            }
        });

        base64Text.addModifyListener(new ModifyListener() {
            public void modifyText(ModifyEvent e) {
                if (!inModify) {
                    inModify = true;
                    try {
                        byte[] base64Bytes = LdifUtils.base64decodeToByteArray(base64Text.getText());
                        String isoString = new String(base64Bytes, "ISO-8859-1"); //$NON-NLS-1$
                        String utf8String = LdifUtils.utf8decode(base64Bytes);

                        iso88591Text.setText(isoString);
                        iso88591HexText.setText(LdifUtils.hexEncode(isoString.getBytes("ISO-8859-1"))); //$NON-NLS-1$
                        utf8Text.setText(utf8String);
                        utf8HexText.setText(LdifUtils.hexEncode(utf8String.getBytes("UTF-8"))); //$NON-NLS-1$
                        errorText.setText(""); //$NON-NLS-1$
                    } catch (Exception ex) {
                        errorText.setText(ex.getMessage());
                        ex.printStackTrace();
                    } finally {
                        inModify = false;
                    }
                }
            }
        });

        return composite;
    }

}