net.sf.j2s.ui.property.J2SConfigPage.java Source code

Java tutorial

Introduction

Here is the source code for net.sf.j2s.ui.property.J2SConfigPage.java

Source

/*******************************************************************************
 * Copyright (c) 2007 java2script.org and others.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 *     Zhou Renjian - initial API and implementation
 *******************************************************************************/
package net.sf.j2s.ui.property;

/**
 * @author zhou renjian
 *
 * 2006-1-31
 */
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Properties;
import java.util.Set;

import net.sf.j2s.ui.classpath.CSSResource;
import net.sf.j2s.ui.classpath.CompositeResources;
import net.sf.j2s.ui.classpath.ContactedClasses;
import net.sf.j2s.ui.classpath.ContactedUnitClass;
import net.sf.j2s.ui.classpath.IRuntimeClasspathEntry;
import net.sf.j2s.ui.classpath.Resource;
import net.sf.j2s.ui.classpath.UnitClass;
import net.sf.j2s.ui.launching.JavaRuntime;
import net.sf.j2s.ui.resources.ExternalResources;

import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.debug.internal.ui.SWTFactory;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.ISelectionChangedListener;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.SelectionChangedEvent;
import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.jface.viewers.TreeViewer;
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.Combo;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.ScrollBar;
import org.eclipse.swt.widgets.Shell;

public class J2SConfigPage extends Composite {

    private Button buttonEnable;
    private Button buttonDisable;
    private boolean compilerEnabled = true;
    private Composite compilerStatusComp;
    private Button buttonUp;
    protected TreeViewer viewer;
    protected J2SClasspathModel classpathModel;
    private Button buttonDown;
    private Button buttonRemove;
    private Button buttonAbandon;
    private Button buttonRestore;
    private Button buttonAddRes;
    private Button buttonAddInnerRes;
    private Button buttonAddPrj;

    private Button buttonDefault;

    protected File j2sFile;

    private transient Set listeners = new HashSet();
    private J2SAddInnerJarAction addInnerJarAction;

    public void addConfigModifiedListener(IJ2SConfigModifiedListener listener) {
        listeners.add(listener);
    }

    public void removeConfigModifiedListener(IJ2SConfigModifiedListener listener) {
        listeners.remove(listener);
    }

    public void fireConfigModified() {
        for (Iterator iter = listeners.iterator(); iter.hasNext();) {
            IJ2SConfigModifiedListener listener = (IJ2SConfigModifiedListener) iter.next();
            listener.configModified();
        }
    }

    public J2SConfigPage(Composite parent, int style) {
        super(parent, style);

        GridLayout gl = new GridLayout();
        gl.numColumns = 1;
        setLayout(gl);
        setLayoutData(new GridData(GridData.FILL_BOTH));

        compilerStatusComp = new Composite(this, SWT.NONE);
        GridLayout gl1 = new GridLayout();
        gl1.numColumns = 3;
        compilerStatusComp.setLayout(gl1);
        GridData gd1 = new GridData(GridData.FILL_HORIZONTAL);
        //gd1.exclude = true;
        compilerStatusComp.setLayoutData(gd1);

        buttonEnable = new Button(compilerStatusComp, SWT.TOGGLE);
        new Label(compilerStatusComp, SWT.NONE).setText(":");
        buttonDisable = new Button(compilerStatusComp, SWT.TOGGLE);
        buttonEnable.addSelectionListener(new SelectionAdapter() {
            public void widgetSelected(SelectionEvent e) {
                enableCompiler();
                fireConfigModified();
            }
        });
        buttonDisable.addSelectionListener(new SelectionAdapter() {
            public void widgetSelected(SelectionEvent e) {
                disableCompiler();
                fireConfigModified();
            }
        });

        Composite viewerComp = new Composite(this, SWT.NONE);
        GridLayout gl3 = new GridLayout();
        gl3.numColumns = 2;
        viewerComp.setLayout(gl3);
        GridData gd2 = new GridData(GridData.FILL_BOTH);
        gd2.heightHint = 250;
        viewerComp.setLayoutData(gd2);

        viewer = new TreeViewer(viewerComp, SWT.BORDER | SWT.MULTI);
        viewer.setContentProvider(new J2SClasspathContentProvider());
        viewer.setLabelProvider(new J2SClasspathLabelProvider());
        viewer.getTree().setLayoutData(new GridData(GridData.FILL_BOTH));

        viewer.addSelectionChangedListener(new ISelectionChangedListener() {
            public void selectionChanged(SelectionChangedEvent event) {
                updateButtonGroup();
            }
        });
        Composite actionComp = new Composite(viewerComp, SWT.NONE);
        actionComp.setLayout(new GridLayout());
        actionComp.setLayoutData(new GridData(GridData.FILL_VERTICAL));

        buttonAddInnerRes = SWTFactory.createPushButton(actionComp, "Add Libraries", null);
        addInnerJarAction = new J2SAddInnerJarAction(this);
        buttonAddInnerRes.addSelectionListener(addInnerJarAction);

        buttonAddRes = SWTFactory.createPushButton(actionComp, "Add Resources", null);
        buttonAddRes.addSelectionListener(new J2SAddJarAction(this));

        buttonAddPrj = SWTFactory.createPushButton(actionComp, "Add Projects", null);
        buttonAddPrj.addSelectionListener(new J2SAddProjectAction(this));

        buttonUp = SWTFactory.createPushButton(actionComp, "Up", null);
        buttonUp.addSelectionListener(new SelectionAdapter() {
            public void widgetSelected(SelectionEvent e) {
                Object[] expandedElements = viewer.getExpandedElements();
                if (isResourcesSelected()) {
                    up(getSelection(), classpathModel.resources);
                } else if (isClassesSelected()) {
                    up(getSelection(), classpathModel.unitClasses);
                } else {
                    up(getSelection(), classpathModel.abandonedClasses);
                }
                ScrollBar bar = viewer.getTree().getVerticalBar();
                double selection = 0;
                if (bar != null) {
                    selection = (0.0 + bar.getSelection()) / bar.getMaximum();
                }
                viewer.refresh();
                //viewer.expandToLevel(2);
                viewer.setExpandedElements(expandedElements);
                if (bar != null) {
                    bar.setSelection((int) Math.round(selection * bar.getMaximum()));
                }
                updateButtonGroup();
                fireConfigModified();
            }
        });

        buttonDown = SWTFactory.createPushButton(actionComp, "Down", null);
        buttonDown.addSelectionListener(new SelectionAdapter() {
            public void widgetSelected(SelectionEvent e) {
                Object[] expandedElements = viewer.getExpandedElements();
                if (isResourcesSelected()) {
                    down(getSelection(), classpathModel.resources);
                } else if (isClassesSelected()) {
                    down(getSelection(), classpathModel.unitClasses);
                } else {
                    down(getSelection(), classpathModel.abandonedClasses);
                }
                ScrollBar bar = viewer.getTree().getVerticalBar();
                double selection = 0;
                if (bar != null) {
                    selection = (0.0 + bar.getSelection()) / bar.getMaximum();
                }
                viewer.refresh();
                //viewer.expandToLevel(2);
                viewer.setExpandedElements(expandedElements);
                if (bar != null) {
                    bar.setSelection((int) Math.round(selection * bar.getMaximum()));
                }
                updateButtonGroup();
                fireConfigModified();
            }
        });
        buttonRemove = SWTFactory.createPushButton(actionComp, "Remove", null);
        buttonRemove.addSelectionListener(new SelectionAdapter() {
            public void widgetSelected(SelectionEvent e) {
                Object[] expandedElements = viewer.getExpandedElements();
                Object[] sels = getSelection();
                for (int i = 0; i < sels.length; i++) {
                    classpathModel.removeTheResource((Resource) sels[i]);
                }
                ScrollBar bar = viewer.getTree().getVerticalBar();
                double selection = 0;
                if (bar != null) {
                    selection = (0.0 + bar.getSelection()) / bar.getMaximum();
                }
                viewer.refresh();
                //viewer.expandToLevel(2);
                viewer.setExpandedElements(expandedElements);
                if (bar != null) {
                    bar.setSelection((int) Math.round(selection * bar.getMaximum()));
                }
                updateButtonGroup();
                fireConfigModified();
            }
        });
        buttonAbandon = SWTFactory.createPushButton(actionComp, "Abandon Classes", null);
        buttonAbandon.addSelectionListener(new J2SAbandonClassesAction(this));

        buttonRestore = SWTFactory.createPushButton(actionComp, "Restore Classes", null);
        buttonRestore.addSelectionListener(new SelectionAdapter() {
            public void widgetSelected(SelectionEvent e) {
                Object[] expandedElements = viewer.getExpandedElements();
                Object[] sels = getSelection();
                for (int i = 0; i < sels.length; i++) {
                    if (sels[i] instanceof J2SCategory) {
                        for (int j = classpathModel.abandonedClasses.size() - 1; j >= 0; j--) {
                            classpathModel.restoreUnitClass((UnitClass) classpathModel.abandonedClasses.get(j));
                        }
                        break;
                    }
                    classpathModel.restoreUnitClass((UnitClass) sels[i]);
                }
                ScrollBar bar = viewer.getTree().getVerticalBar();
                double selection = 0;
                if (bar != null) {
                    selection = (0.0 + bar.getSelection()) / bar.getMaximum();
                }
                viewer.refresh();
                //viewer.expandToLevel(2);
                viewer.setExpandedElements(expandedElements);
                if (bar != null) {
                    bar.setSelection((int) Math.round(selection * bar.getMaximum()));
                }
                updateButtonGroup();
                fireConfigModified();
            }
        });
        buttonDefault = SWTFactory.createPushButton(actionComp, "Restore Default Classpath", null);
        GridData gd3 = new GridData();
        gd3.exclude = true;
        buttonDefault.setLayoutData(gd3);

        updateButtonGroup();
    }

    /*
     * Nasty thing
     */
    public void forClasspathTab() {
        GridData gd3 = new GridData();
        buttonDefault.setLayoutData(gd3);
        GridData gd1 = new GridData(GridData.FILL_HORIZONTAL);
        gd1.exclude = true;
        compilerStatusComp.setLayoutData(gd1);
    }

    private boolean isLastElementSelected() {
        Object[] sels = getSelection();
        if (classpathModel.abandonedClasses.size() > 0) {
            Object res = classpathModel.abandonedClasses.get(classpathModel.abandonedClasses.size() - 1);
            for (int i = 0; i < sels.length; i++) {
                if (res == sels[i]) {
                    return true;
                }
            }
        }
        if (classpathModel.unitClasses.size() > 0) {
            Object res = classpathModel.unitClasses.get(classpathModel.unitClasses.size() - 1);
            for (int i = 0; i < sels.length; i++) {
                if (res == sels[i]) {
                    return true;
                }
            }
        }
        if (classpathModel.resources.size() > 0) {
            Object res = classpathModel.resources.get(classpathModel.resources.size() - 1);
            for (int i = 0; i < sels.length; i++) {
                if (res == sels[i]) {
                    return true;
                }
            }
        }
        return false;
    }

    private boolean isFirstElementSelected() {
        Object[] sels = getSelection();
        if (classpathModel.abandonedClasses.size() > 0) {
            Object res = classpathModel.abandonedClasses.get(0);
            for (int i = 0; i < sels.length; i++) {
                if (res == sels[i]) {
                    return true;
                }
            }
        }
        if (classpathModel.unitClasses.size() > 0) {
            Object res = classpathModel.unitClasses.get(0);
            for (int i = 0; i < sels.length; i++) {
                if (res == sels[i]) {
                    return true;
                }
            }
        }
        if (classpathModel.resources.size() > 0) {
            Object res = classpathModel.resources.get(0);
            for (int i = 0; i < sels.length; i++) {
                if (res == sels[i]) {
                    return true;
                }
            }
        }
        return false;
    }

    private static void up(Object[] sels, List list) {
        int size = list.size();
        for (int i = 1; i < size; i++) {
            Object obj = list.get(i);
            for (int j = 0; j < sels.length; j++) {
                if (sels[j] == obj) {
                    Object t = list.get(i - 1);
                    list.set(i - 1, sels[j]);
                    list.set(i, t);
                    break;
                }
            }
        }
    }

    private static void down(Object[] sels, List list) {
        int size = list.size();
        for (int i = size - 2; i >= 0; i--) {
            Object obj = list.get(i);
            for (int j = 0; j < sels.length; j++) {
                if (sels[j] == obj) {
                    Object t = list.get(i + 1);
                    list.set(i + 1, sels[j]);
                    list.set(i, t);
                    break;
                }
            }
        }
    }

    protected void updateButtonGroup() {
        buttonAbandon.setEnabled(true);
        buttonRestore.setEnabled(false);
        buttonRemove.setEnabled(false);
        buttonDown.setEnabled(false);
        buttonUp.setEnabled(false);
        buttonAddPrj.setEnabled(false);
        buttonAddRes.setEnabled(false);
        buttonAddInnerRes.setEnabled(false);
        if (!isNoContactedUnits()) {
            return;
        }
        if (isSelectionInOneCategory()) {
            //if (!isAbandonsSelected()) {
            buttonRemove.setEnabled(true);
            //}
            if (!isLastElementSelected()) {
                buttonDown.setEnabled(true);
            }
            if (!isFirstElementSelected()) {
                buttonUp.setEnabled(true);
            }
            if (isResourcesSelected()) {
                buttonAddPrj.setEnabled(true);
                buttonAddRes.setEnabled(true);
                buttonAddInnerRes.setEnabled(true);
            } else {
                if (isAbandonsSelected()) {
                    buttonRestore.setEnabled(true);
                } else {
                    buttonAbandon.setEnabled(true);
                }
            }
        } else if (!isSelectionContainsCategory() && getSelection().length > 0) {
            buttonRemove.setEnabled(true);
        }
        if (getSelection().length == 1) {
            if (isResourceCategorySelected()) {
                buttonAddPrj.setEnabled(true);
                buttonAddInnerRes.setEnabled(true);
                buttonAddRes.setEnabled(true);
            } else if (isAbandonedCategorySelected() && classpathModel.abandonedClasses.size() > 0) {
                buttonRestore.setEnabled(true);
            }
        }

    }

    private boolean isNoContactedUnits() {
        Object[] sels = getSelection();
        if (sels.length == 0) {
            return true;
        }
        boolean b1 = true;
        for (int i = 0; i < sels.length; i++) {
            if (sels[i] instanceof ContactedUnitClass) {
                b1 = false;
                break;
            }
            if (sels[i] instanceof CSSResource && ((CSSResource) sels[i]).getParent() instanceof ContactedClasses) {
                b1 = false;
                break;
            }
        }
        return b1;
    }

    Object[] getSelection() {
        IStructuredSelection selection = (IStructuredSelection) viewer.getSelection();
        if (selection.size() >= 1) {
            return selection.toArray();
        } else {
            return new Object[0];
        }
    }

    private boolean isSelectionInOneCategory() {
        Object[] sels = getSelection();
        if (sels.length == 0) {
            return false;
        }
        boolean b1 = false;
        for (int i = 0; i < sels.length; i++) {
            if (classpathModel.isResourceInResources(sels[i])) {
                b1 = true;
                break;
            }
        }
        boolean b2 = false;
        for (int i = 0; i < sels.length; i++) {
            if (classpathModel.isResourceInClasses(sels[i])) {
                b2 = true;
                break;
            }
        }
        if (b1 && b2) {
            return false;
        }
        boolean b3 = false;
        for (int i = 0; i < sels.length; i++) {
            if (classpathModel.isResourceInAbandons(sels[i])) {
                b3 = true;
                break;
            }
        }
        for (int i = 0; i < sels.length; i++) {
            if (sels[i] instanceof J2SCategory) {
                return false;
            }
        }
        if ((b1 && b3) || (b2 && b3)) {
            return false;
        }
        return b1 || b2 || b3;
    }

    private boolean isResourcesSelected() {
        Object[] sels = getSelection();
        boolean b = false;
        boolean other = false;
        for (int i = 0; i < sels.length; i++) {
            if (classpathModel.isResourceInResources(sels[i])) {
                b = true;
                break;
            } else {
                other = true;
            }
        }
        return b && !other;
    }

    private boolean isResourceCategorySelected() {
        Object[] sels = getSelection();
        boolean b = false;
        for (int i = 0; i < sels.length; i++) {
            if (sels[i] instanceof J2SCategory) {
                J2SCategory ctg = (J2SCategory) sels[i];
                if (J2SClasspathModel.categories[0].equals(ctg.getKey())) {
                    b = true;
                    break;
                }
            }
        }
        return b;
    }

    private boolean isAbandonedCategorySelected() {
        Object[] sels = getSelection();
        boolean b = false;
        for (int i = 0; i < sels.length; i++) {
            if (sels[i] instanceof J2SCategory) {
                J2SCategory ctg = (J2SCategory) sels[i];
                if (J2SClasspathModel.categories[J2SClasspathModel.categories.length - 1].equals(ctg.getKey())) {
                    b = true;
                    break;
                }
            }
        }
        return b;
    }

    private boolean isClassesSelected() {
        Object[] sels = getSelection();
        boolean b = false;
        for (int i = 0; i < sels.length; i++) {
            if (classpathModel.isResourceInClasses(sels[i])) {
                b = true;
                break;
            }
        }
        return b;
    }

    private boolean isAbandonsSelected() {
        Object[] sels = getSelection();
        boolean b = false;
        for (int i = 0; i < sels.length; i++) {
            if (classpathModel.isResourceInAbandons(sels[i])) {
                b = true;
                break;
            }
        }
        return b;
    }

    private boolean isSelectionContainsCategory() {
        Object[] sels = getSelection();
        boolean b = false;
        for (int i = 0; i < sels.length; i++) {
            if (sels[i] instanceof J2SCategory) {
                b = true;
                break;
            }
        }
        return b;
    }

    public void initConfigPage(File j2sFile) {
        initConfigPage(j2sFile, null);
    }

    public void initConfigPage(File file, InputStream is) {
        if (file != null) {
            this.j2sFile = file;
        }
        classpathModel = new J2SClasspathModel();
        String[][] allResources = ExternalResources.getAllResources();
        String j2sLibPath = null;
        if (allResources != null && allResources.length != 0 && allResources[0].length != 0) {
            if ((allResources[0][0]).startsWith("|")) {
                allResources[0][0] = allResources[0][0].substring(1).replace('\\', '/');
            }
            j2sLibPath = allResources[0][0].substring(0, allResources[0][0].lastIndexOf("/") + 1);
        } else {
            j2sLibPath = "../net.sf.j2s.lib/j2slib/";
        }
        IRuntimeClasspathEntry entry = JavaRuntime
                .newArchiveRuntimeClasspathEntry(j2sLibPath + "/java.runtime.j2x");
        if (entry != null) {
            ((Resource) entry).setAbsolute(true);
            classpathModel.resources.add(entry);
        }
        CompositeResources comp = new CompositeResources();
        comp.setFolder(j2sFile.getParentFile());
        comp.setRelativePath(j2sFile.getName());
        if (addInnerJarAction != null) {
            addInnerJarAction.setJ2SFile(j2sFile);
        }
        if (is != null) {
            comp.load(is);
        } else {
            comp.load();
        }
        updateByCompositeResource(comp);
    }

    private void updateByCompositeResource(CompositeResources comp) {
        Resource[] children = comp.getChildren();
        for (int i = 0; i < children.length; i++) {
            Resource res = children[i];
            if (res instanceof UnitClass) {
                classpathModel.addUnitClass((UnitClass) res);
            } else {
                classpathModel.addResource(res);
            }
        }
        children = comp.getAbandonedResources();
        for (int i = 0; i < children.length; i++) {
            Resource res = children[i];
            if (res instanceof UnitClass) {
                classpathModel.addAbandonedClass((UnitClass) res);
            } else {
                //classpathModel.addResource(res);
            }
        }
        viewer.setInput(classpathModel);
        viewer.expandToLevel(2);
        if (comp.getCompilerStatus() != null && "enable".equals(comp.getCompilerStatus())) {
            compilerEnabled = true;
        } else {
            compilerEnabled = false;
        }
        if (!compilerEnabled) {
            disableCompiler();
        } else {
            enableCompiler();
        }
    }

    private void enableCompiler() {
        buttonDisable.setSelection(false);
        buttonDisable.forceFocus();
        buttonEnable.setSelection(true);
        buttonEnable.setText("Java2Script compiler is enabled");
        buttonDisable.setText("Disable Java2Script Compiler");
        compilerEnabled = true;
        compilerStatusComp.layout(true);
        setConfigEditable(true);
    }

    private void disableCompiler() {
        buttonDisable.setSelection(true);
        buttonEnable.forceFocus();
        buttonEnable.setSelection(false);
        buttonEnable.setText("Enable Java2Script Compiler");
        buttonDisable.setText("Java2Script compiler is disabled");
        compilerEnabled = false;
        compilerStatusComp.layout(true);

        setConfigEditable(false);
    }

    private void setConfigEditable(boolean editable) {
        viewer.getTree().setEnabled(editable);
        if (editable) {
            updateButtonGroup();
        } else {
            buttonAbandon.setEnabled(false);
            buttonRestore.setEnabled(false);
            buttonRemove.setEnabled(false);
            buttonDown.setEnabled(false);
            buttonUp.setEnabled(false);
            buttonAddPrj.setEnabled(false);
            buttonAddRes.setEnabled(false);
            buttonAddInnerRes.setEnabled(false);
        }
    }

    public boolean isCompilerEnabled() {
        return compilerEnabled;
    }

    public Properties getUpdatedProperties(InputStream is, File file) {
        Properties props = new Properties();
        try {
            props.load(is);
        } catch (FileNotFoundException e1) {
            e1.printStackTrace();
        } catch (IOException e1) {
            e1.printStackTrace();
        }

        List ress = classpathModel.resources;
        StringBuffer buffer = new StringBuffer();
        for (Iterator iter = ress.iterator(); iter.hasNext();) {
            Resource res = (Resource) iter.next();
            String resPath = null;
            resPath = res.toResourceString();
            if (res.isAbsolute() && file != null) {
                resPath = FileUtil.toRelativePath(resPath.substring(1), file.getAbsolutePath());
            }
            if (resPath != null) {
                if (buffer.length() != 0) {
                    buffer.append(',');
                }
                buffer.append(resPath);
            }
        }
        ress = classpathModel.unitClasses;
        for (Iterator iter = ress.iterator(); iter.hasNext();) {
            Resource res = (Resource) iter.next();
            String resPath = res.toResourceString();
            if (resPath != null) {
                if (buffer.length() != 0) {
                    buffer.append(',');
                }
                buffer.append(resPath);
            }
        }
        props.setProperty("j2s.resources.list", buffer.toString());

        ress = classpathModel.abandonedClasses;
        buffer = new StringBuffer();
        for (Iterator iter = ress.iterator(); iter.hasNext();) {
            Resource res = (Resource) iter.next();
            String resPath = res.toResourceString();
            if (resPath != null) {
                if (buffer.length() != 0) {
                    buffer.append(',');
                }
                buffer.append(resPath);
            }
        }
        props.setProperty("j2s.abandoned.resources.list", buffer.toString());
        if (isCompilerEnabled()) {
            props.setProperty("j2s.compiler.status", "enable");
        } else {
            props.setProperty("j2s.compiler.status", "disable");
        }
        return props;
    }

    /* (non-Javadoc)
     * @see org.eclipse.swt.widgets.Composite#setFocus()
     */
    public boolean setFocus() {
        if (compilerEnabled) {
            ISelection selection = viewer.getSelection();
            if (selection == null || selection.isEmpty()) {
                viewer.setSelection(new StructuredSelection(classpathModel.getCategories()[0]));
            }
            viewer.getControl().setFocus();
        } else {
            buttonEnable.setFocus();
        }
        return true;
    }

    public Button getRestoreDefaultButton() {
        return buttonDefault;
    }
}