Example usage for org.eclipse.jface.preference FieldEditor VALUE

List of usage examples for org.eclipse.jface.preference FieldEditor VALUE

Introduction

In this page you can find the example usage for org.eclipse.jface.preference FieldEditor VALUE.

Prototype

String VALUE

To view the source code for org.eclipse.jface.preference FieldEditor VALUE.

Click Source Link

Document

Property name constant (value "field_editor_value") to signal a change in the value of this field editor.

Usage

From source file:com.subgraph.vega.application.preferences.VegaSocksPreferencePage.java

License:Open Source License

@Override
public void propertyChange(PropertyChangeEvent event) {
    if (event.getProperty().equals(FieldEditor.VALUE) && event.getSource() == enableField) {
        if (event.getNewValue() instanceof Boolean) {
            setEnableState((Boolean) event.getNewValue());
        }//from   www  .j av a  2  s . com
    }
    super.propertyChange(event);
}

From source file:de.akra.idocit.ui.components.IDocItPreferencePage.java

License:Apache License

/**
 * {@inheritDoc}/*w w w  . ja v a2  s . c o  m*/
 */
@Override
public void propertyChange(PropertyChangeEvent event) {
    super.propertyChange(event);
    if (event.getProperty().equals(FieldEditor.VALUE)) {
        checkState();
    }
}

From source file:eu.esdihumboldt.hale.io.gml.ui.wfs.AbstractWFSSource.java

License:Open Source License

/**
 * @see ImportSource#createControls(Composite)
 *//*ww w.  j a va 2s .  co  m*/
@Override
public void createControls(Composite parent) {
    parent.setLayout(new GridLayout(3, false));

    // caption
    new Label(parent, SWT.NONE); // placeholder

    Label caption = new Label(parent, SWT.NONE);
    caption.setText(getCaption());
    caption.setLayoutData(new GridData(SWT.BEGINNING, SWT.BEGINNING, true, false, 2, 1));

    // source file
    sourceURL = createWfsFieldEditor(parent);
    sourceURL.setPage(getPage());

    sourceURL.setPropertyChangeListener(new IPropertyChangeListener() {

        @Override
        public void propertyChange(PropertyChangeEvent event) {
            if (event.getProperty().equals(FieldEditor.IS_VALID)) {
                updateState(false);
            } else if (event.getProperty().equals(FieldEditor.VALUE)) {
                updateState(false);
            }
        }
    });

    // provider selection

    // label
    Label providerLabel = new Label(parent, SWT.NONE);
    providerLabel.setText("Import as");

    // create provider combo
    ComboViewer providers = createProviders(parent);
    providers.getControl().setLayoutData(new GridData(SWT.FILL, SWT.BEGINNING, true, false, 2, 1));

    // initial state update
    updateState(true);
}

From source file:eu.esdihumboldt.hale.io.haleconnect.ui.projects.HaleConnectSource.java

License:Open Source License

/**
 * @see ImportSource#createControls(Composite)
 */// ww  w .j  a v a  2 s  . co m
@Override
public void createControls(Composite parent) {
    parent.setLayout(new GridLayout(3, false));

    HaleConnectService hcs = HaleUI.getServiceProvider().getService(HaleConnectService.class);

    /*
     * Login status label
     */
    loginStatusLabel = new Label(parent, SWT.NONE);
    loginStatusLabel.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false, 2, 1));

    loginButton = new Button(parent, SWT.PUSH);
    loginButton.setText("Login");
    loginButton.addSelectionListener(new SelectionAdapter() {

        /**
         * @see org.eclipse.swt.events.SelectionAdapter#widgetSelected(org.eclipse.swt.events.SelectionEvent)
         */
        @Override
        public void widgetSelected(SelectionEvent e) {
            HaleConnectLoginDialog loginDialog = HaleConnectLoginHandler
                    .createLoginDialog(Display.getCurrent().getActiveShell());
            if (loginDialog.open() == Dialog.OK) {
                HaleConnectLoginHandler.performLogin(loginDialog);
                updateLoginStatus();
            }
        }

    });

    /*
     * Project name text field
     */
    projectName = new StringFieldEditor("project", "Project", parent) {

        // the following methods are overridden so the button
        // may appear on the same line

        @Override
        public int getNumberOfControls() {
            return super.getNumberOfControls() + 1;
        }

        @Override
        protected void doFillIntoGrid(Composite parent, int numColumns) {
            super.doFillIntoGrid(parent, numColumns - 1);
        }
    };
    projectName.setEmptyStringAllowed(false);
    projectName.setErrorMessage("Please select a project before continuing.");
    projectName.setPage(getPage());
    projectName.getTextControl(parent).setEditable(false);
    projectName.getTextControl(parent).addMouseListener(new MouseAdapter() {

        @Override
        public void mouseDown(MouseEvent e) {
            selectProject();
        }

    });

    projectName.setPropertyChangeListener(new IPropertyChangeListener() {

        @Override
        public void propertyChange(PropertyChangeEvent event) {
            if (event.getProperty().equals(FieldEditor.IS_VALID)) {
                getPage().setMessage(null);
                updateState(false);
            } else if (event.getProperty().equals(FieldEditor.VALUE)) {
                getPage().setMessage(null);
                updateState(false);
            }
        }
    });

    /*
     * Select project button
     */
    selectProjectButton = new Button(parent, SWT.PUSH);
    selectProjectButton.setText("Select");
    selectProjectButton.setToolTipText("Select project");
    selectProjectButton.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false, 1, 1));
    selectProjectButton.setEnabled(hcs.isLoggedIn());
    selectProjectButton.addSelectionListener(new SelectionAdapter() {

        @Override
        public void widgetSelected(SelectionEvent e) {
            selectProject();
        }
    });

    /*
     * Supported types
     */
    supportedTypes = new HashSet<IContentType>();
    if (getConfiguration().getContentType() != null) {
        supportedTypes.add(getConfiguration().getContentType());
    } else {
        // set content types for file field
        Collection<IOProviderDescriptor> factories = getConfiguration().getFactories();
        for (IOProviderDescriptor factory : factories) {
            supportedTypes.addAll(factory.getSupportedTypes());
        }
    }

    // types combo
    Composite group = new Composite(parent, SWT.NONE);
    group.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false, 3, 1));
    group.setLayout(GridLayoutFactory.fillDefaults().numColumns(3).create());

    // label
    Label providerLabel = new Label(parent, SWT.NONE);
    providerLabel.setText("Import as");

    // create provider combo
    ComboViewer providers = createProviders(parent);
    providers.getControl().setLayoutData(new GridData(SWT.FILL, SWT.BEGINNING, true, false, 2, 1));

    updateLoginStatus();

    // initial state update
    updateState(true);
}

From source file:eu.esdihumboldt.hale.io.haleconnect.ui.projects.HaleConnectTarget.java

License:Open Source License

@Override
public void createControls(Composite parent) {
    getPage().setDescription("Please select a destination file for the export");

    parent.setLayout(new GridLayout(4, false));

    Composite loginGroup = new Composite(parent, SWT.BORDER);
    loginGroup.setLayout(new GridLayout(4, false));
    GridData loginGroupLayout = new GridData(SWT.LEAD, SWT.LEAD, false, false, 4, 1);
    loginGroupLayout.widthHint = 550;//  ww  w  .  j  av a2 s .c om
    loginGroup.setLayoutData(loginGroupLayout);

    /*
     * Login status label
     */
    loginStatusLabel = new Label(loginGroup, SWT.NONE);
    loginStatusLabel.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 3, 1));

    loginButton = new Button(loginGroup, SWT.PUSH);
    loginButton.setText("Login");
    loginButton.setLayoutData(new GridData(SWT.LEAD, SWT.CENTER, false, false, 1, 1));
    loginButton.addSelectionListener(new SelectionAdapter() {

        /**
         * @see org.eclipse.swt.events.SelectionAdapter#widgetSelected(org.eclipse.swt.events.SelectionEvent)
         */
        @Override
        public void widgetSelected(SelectionEvent e) {
            HaleConnectLoginDialog loginDialog = HaleConnectLoginHandler
                    .createLoginDialog(Display.getCurrent().getActiveShell());
            if (loginDialog != null && loginDialog.open() == Dialog.OK) {
                HaleConnectLoginHandler.performLogin(loginDialog);
                updateState();
                prefillTargetProject();
            }
        }

    });

    updateOrNewGroup = new Group(parent, SWT.NONE);
    updateOrNewGroup.setText("Please choose whether you would like to...");
    updateOrNewGroup.setLayout(new GridLayout(4, false));
    updateOrNewGroup.setLayoutData(new GridData(SWT.LEAD, SWT.LEAD, false, false, 4, 1));

    newProject = new Button(updateOrNewGroup, SWT.RADIO);
    newProject.setText("create a new project on hale connect");
    newProject.setSelection(true);
    newProject.addSelectionListener(new SelectionAdapter() {

        /**
         * @see org.eclipse.swt.events.SelectionAdapter#widgetSelected(org.eclipse.swt.events.SelectionEvent)
         */
        @Override
        public void widgetSelected(SelectionEvent e) {
            updateState();
        }

    });

    updateProject = new Button(updateOrNewGroup, SWT.RADIO);
    updateProject.setText("update an existing project");
    updateProject.addSelectionListener(new SelectionAdapter() {

        /**
         * @see org.eclipse.swt.events.SelectionAdapter#widgetSelected(org.eclipse.swt.events.SelectionEvent)
         */
        @Override
        public void widgetSelected(SelectionEvent e) {
            updateState();
        }

    });

    controlsStackLayout = new StackLayout();
    controlsStack = new Composite(parent, SWT.NONE);
    controlsStack.setLayout(controlsStackLayout);

    newProjectControls = new Composite(controlsStack, SWT.NONE);
    newProjectControls.setLayout(new GridLayout(4, true));
    GridData grid = new GridData(SWT.FILL, SWT.FILL, true, true, 4, 1);
    newProjectControls.setLayoutData(grid);

    ownershipGroup = new Composite(newProjectControls, SWT.NONE);
    ownershipGroup.setLayout(new GridLayout(4, false));
    ownershipGroup.setLayoutData(new GridData(SWT.LEAD, SWT.LEAD, false, false, 4, 1));

    Label ownerLabel = new Label(ownershipGroup, SWT.NONE);
    ownerLabel.setText("Who should own the uploaded project?");

    ownerUser = new Button(ownershipGroup, SWT.RADIO);
    ownerUser.setText("You");

    ownerOrg = new Button(ownershipGroup, SWT.RADIO);
    ownerOrg.setText("Your organisation");

    orgSelector = new ComboViewer(ownershipGroup);
    GridData orgSelectorGrid = new GridData(SWT.LEAD, SWT.LEAD, false, false);
    orgSelectorGrid.widthHint = 175;
    orgSelector.getCombo().setLayoutData(orgSelectorGrid);
    orgSelector.setContentProvider(ArrayContentProvider.getInstance());
    orgSelector.setLabelProvider(new LabelProvider() {

        @Override
        public String getText(Object element) {
            if (element instanceof HaleConnectOrganisationInfo) {
                return ((HaleConnectOrganisationInfo) element).getName();
            }

            return super.getText(element);
        }

    });

    Composite bucketOptions = new Composite(parent, SWT.NONE);
    bucketOptions.setLayout(new RowLayout());
    bucketOptions.setLayoutData(new GridData(SWT.LEAD, SWT.LEAD, true, true, 4, 1));

    enableVersioning = new Button(bucketOptions, SWT.CHECK);
    enableVersioning.setText("Enable versioning?");

    publicAccess = new Button(bucketOptions, SWT.CHECK);
    publicAccess.setText("Allow public access?");

    updateProjectControls = new Composite(controlsStack, SWT.NONE);
    updateProjectControls.setVisible(false);
    updateProjectControls.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 4, 1));

    /*
     * Project name text field
     */
    projectName = new StringFieldEditor("project", "Project to update", updateProjectControls) {

        // the following methods are overridden so the button
        // may appear on the same line

        @Override
        public int getNumberOfControls() {
            return super.getNumberOfControls() + 1;
        }

        @Override
        protected void doFillIntoGrid(Composite parent, int numColumns) {
            super.doFillIntoGrid(parent, numColumns - 1);
        }
    };
    projectName.setEmptyStringAllowed(false);
    projectName.setErrorMessage("Please select a project before continuing.");
    projectName.setPage(getPage());
    projectName.getTextControl(updateProjectControls).setEditable(false);
    projectName.getTextControl(updateProjectControls).addMouseListener(new MouseAdapter() {

        @Override
        public void mouseDown(MouseEvent e) {
            selectProject();
        }

    });

    projectName.setPropertyChangeListener(new IPropertyChangeListener() {

        @Override
        public void propertyChange(PropertyChangeEvent event) {
            if (event.getProperty().equals(FieldEditor.IS_VALID)) {
                getPage().setMessage(null);
                updateState();
            } else if (event.getProperty().equals(FieldEditor.VALUE)) {
                getPage().setMessage(null);
                updateState();
            }
        }
    });

    /*
     * Select project button
     */
    selectProjectButton = new Button(updateProjectControls, SWT.PUSH);
    selectProjectButton.setText("Select");
    selectProjectButton.setToolTipText("Select project");
    selectProjectButton.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false, 1, 1));
    selectProjectButton.addSelectionListener(new SelectionAdapter() {

        @Override
        public void widgetSelected(SelectionEvent e) {
            selectProject();
        }
    });

    FontData currentFont = loginStatusLabel.getFont().getFontData()[0];

    upstreamModifiedWarning = new Label(updateProjectControls, SWT.WRAP);
    upstreamModifiedWarning.setLayoutData(new GridData(SWT.BEGINNING, SWT.BEGINNING, true, false, 4, 1));
    upstreamModifiedWarning.setFont(new Font(upstreamModifiedWarning.getDisplay(),
            new FontData(currentFont.getName(), currentFont.getHeight(), SWT.BOLD)));
    upstreamModifiedWarning.setVisible(false);

    Composite writerOptions = new Composite(parent, SWT.NONE);
    writerOptions.setLayout(new RowLayout());
    writerOptions.setLayoutData(new GridData(SWT.LEAD, SWT.LEAD, true, true, 4, 2));

    includeWebResources = new Button(writerOptions, SWT.CHECK);
    includeWebResources.setText("Include web resources?");

    excludeData = new Button(writerOptions, SWT.CHECK);
    excludeData.setText("Exclude source data?");
    excludeData.setSelection(true);

    excludeCachedResources = new Button(writerOptions, SWT.CHECK);
    excludeCachedResources
            .setText("Use cached internal schema representation (required for big schema files)?");
    excludeCachedResources.setSelection(true);

    prefillTargetProject();

    updateState();
}

From source file:eu.esdihumboldt.hale.io.wfs.ui.AbstractWFSSource.java

License:Open Source License

/**
 * @see ImportSource#createControls(Composite)
 *//*w ww  . j  a  va2  s .c  om*/
@Override
public void createControls(Composite parent) {
    parent.setLayout(new GridLayout(4, false));

    // caption
    new Label(parent, SWT.NONE); // placeholder

    Label caption = new Label(parent, SWT.NONE);
    caption.setText(getCaption());
    caption.setLayoutData(new GridData(SWT.BEGINNING, SWT.BEGINNING, true, false, 3, 1));

    // source file
    // target URL field
    sourceURL = new URLSourceURIFieldEditor("sourceURL", "URL:", parent) {

        // the following methods are overridden so the capabilities button
        // may appear on the same line

        @Override
        public int getNumberOfControls() {
            return super.getNumberOfControls() + 1;
        }

        @Override
        protected void doFillIntoGrid(Composite parent, int numColumns) {
            super.doFillIntoGrid(parent, numColumns - 1);
        }

    };
    sourceURL.setPage(getPage());

    // set custom URI filter
    sourceURL.setURIFilter(createHistoryURIFilter());

    // set content types for URI field
    Collection<IOProviderDescriptor> factories = getConfiguration().getFactories();
    HashSet<IContentType> supportedTypes = new HashSet<IContentType>();
    for (IOProviderDescriptor factory : factories) {
        supportedTypes.addAll(factory.getSupportedTypes());
    }

    sourceURL.setContentTypes(supportedTypes);

    sourceURL.setPropertyChangeListener(new IPropertyChangeListener() {

        @Override
        public void propertyChange(PropertyChangeEvent event) {
            if (event.getProperty().equals(FieldEditor.IS_VALID)) {
                getPage().setMessage(null);
                updateState(true);
            } else if (event.getProperty().equals(FieldEditor.VALUE)) {
                getPage().setMessage(null);
                updateState(true);
            }
        }
    });

    // button to determine from capabilities
    Button capButton = new Button(parent, SWT.PUSH);
    capButton.setText("...");
    capButton.setToolTipText("Determine based on WFS Capabilities");
    capButton.addSelectionListener(new SelectionAdapter() {

        @Override
        public void widgetSelected(SelectionEvent e) {
            determineSource(sourceURL);
        }
    });

    // provider selection

    // label
    Label providerLabel = new Label(parent, SWT.NONE);
    providerLabel.setText("Import as");

    // create provider combo
    ComboViewer providers = createProviders(parent);
    providers.getControl().setLayoutData(new GridData(SWT.FILL, SWT.BEGINNING, true, false, 3, 1));

    // initial state update
    updateState(true);
}

From source file:eu.esdihumboldt.hale.io.wfs.ui.WFSTarget.java

License:Open Source License

@Override
public void createControls(Composite parent) {
    GridLayout layout = new GridLayout(3, false);
    parent.setLayout(layout);/* w w  w . java 2  s. c o m*/

    // target URL field
    targetURL = new URIFieldEditor("targetURL", "Transaction URL", parent) {

        // the following methods are overridden so the capabilities button
        // may appear on the same line

        @Override
        public int getNumberOfControls() {
            return super.getNumberOfControls() + 1;
        }

        @Override
        protected void doFillIntoGrid(Composite parent, int numColumns) {
            super.doFillIntoGrid(parent, numColumns - 1);
        }

    };
    targetURL.setPage(getPage());

    targetURL.setPropertyChangeListener(new IPropertyChangeListener() {

        @Override
        public void propertyChange(PropertyChangeEvent event) {
            if (event.getProperty().equals(FieldEditor.IS_VALID)) {
                getPage().setMessage(null);
                updateState();
            } else if (event.getProperty().equals(FieldEditor.VALUE)) {
                getPage().setMessage(null);
                updateState();
            }
        }
    });

    // button to determine from capabilities
    Button capButton = new Button(parent, SWT.PUSH);
    capButton.setText("...");
    capButton.setToolTipText("Determine based on WFS Capabilities");
    capButton.addSelectionListener(new SelectionAdapter() {

        @Override
        public void widgetSelected(SelectionEvent e) {
            WFSTransactionConfig config = new WFSTransactionConfig();
            ISelection versionSel = selectVersion.getSelection();
            if (!versionSel.isEmpty() && versionSel instanceof IStructuredSelection) {
                WFSVersion version = (WFSVersion) ((IStructuredSelection) versionSel).getFirstElement();
                config.setVersion(version);
            }

            WFSTransactionWizard wizard = new WFSTransactionWizard(config);
            HaleWizardDialog dialog = new HaleWizardDialog(Display.getCurrent().getActiveShell(), wizard);

            if (dialog.open() == WizardDialog.OK) {
                WFSTransactionConfig result = wizard.getConfiguration();

                // apply result
                targetURL.setStringValue(result.getTransactionUri().toString());
                if (result.getVersion() != null) {
                    selectVersion.setSelection(new StructuredSelection(result.getVersion()));
                } else {
                    selectVersion.setSelection(new StructuredSelection());
                }
            }
        }
    });

    // select version
    Label versionLabel = new Label(parent, SWT.NONE);
    versionLabel.setText("WFS Version");

    selectVersion = new ComboViewer(parent);
    GridDataFactory.swtDefaults().span(1, 1).grab(true, false).align(SWT.FILL, SWT.CENTER)
            .applyTo(selectVersion.getControl());
    selectVersion.setContentProvider(EnumContentProvider.getInstance());
    selectVersion.setLabelProvider(new LabelProvider() {

        @Override
        public String getText(Object element) {
            if (element instanceof WFSVersion) {
                return ((WFSVersion) element).versionString;
            }
            return super.getText(element);
        }

    });
    selectVersion.setInput(WFSVersion.class);

    selectVersion.addSelectionChangedListener(new ISelectionChangedListener() {

        @Override
        public void selectionChanged(SelectionChangedEvent event) {
            updateState();
        }
    });

    // fixed content type
    setContentType(Platform.getContentTypeManager().getContentType(CONTENT_TYPE_ID_WFST));

    // initial state update
    updateState();
}

From source file:eu.esdihumboldt.hale.ui.io.instance.crs.SelectCRSDialog.java

License:Open Source License

/**
 * @see IPropertyChangeListener#propertyChange(org.eclipse.jface.util.PropertyChangeEvent)
 *///from ww w . j  a  v  a2 s.co  m
@Override
public void propertyChange(PropertyChangeEvent event) {
    if (event.getProperty().equals(FieldEditor.VALUE)) {
        CRSFieldEditor editor = (CRSFieldEditor) event.getSource();
        updateMessage(editor);
    } else if (event.getProperty().equals(FieldEditor.IS_VALID)) {
        updateState();
    }
}

From source file:eu.esdihumboldt.hale.ui.io.project.ArchiveProjectImportSelectLocationPage.java

License:Open Source License

@Override
protected void createContent(Composite page) {
    directoryField = new KeyStrokeValidatingDirectoryFieldEditor("Import location", "Select directory", page);
    directoryField.setEmptyStringAllowed(false);
    directoryField.setPropertyChangeListener(new IPropertyChangeListener() {

        @Override/*from   www  .  j av  a  2 s.  c  o  m*/
        public void propertyChange(PropertyChangeEvent event) {
            if (event.getProperty().equals(FieldEditor.IS_VALID)) {
                updateState();
            } else if (event.getProperty().equals(FieldEditor.VALUE)) {
                updateState();
            }
        }
    });
}

From source file:eu.esdihumboldt.hale.ui.io.source.FileSource.java

License:Open Source License

/**
 * @see ImportSource#createControls(Composite)
 *//* w ww  .  ja va  2s  .c o m*/
@Override
public void createControls(Composite parent) {
    parent.setLayout(new GridLayout(4, false));

    ProjectService ps = (ProjectService) PlatformUI.getWorkbench().getService(ProjectService.class);
    projectLocation = ps.getLoadLocation() == null ? null : ps.getLoadLocation();
    boolean projectLocAvailable = projectLocation != null && "file".equals(projectLocation.getScheme());

    // source file
    sourceFile = new FileSourceFileFieldEditor("sourceFile", "Source file:",
            FileFieldEditor.VALIDATE_ON_KEY_STROKE, parent, projectLocation);
    sourceFile.setEmptyStringAllowed(false);
    sourceFile.setPage(getPage());

    // set content types for file field
    Collection<IOProviderDescriptor> factories = getConfiguration().getFactories();
    supportedTypes = new HashSet<IContentType>();
    for (IOProviderDescriptor factory : factories) {
        supportedTypes.addAll(factory.getSupportedTypes());
    }

    sourceFile.setContentTypes(supportedTypes);
    sourceFile.setPropertyChangeListener(new IPropertyChangeListener() {

        @Override
        public void propertyChange(PropertyChangeEvent event) {
            if (event.getProperty().equals(FieldEditor.IS_VALID)) {
                updateState(true);
            } else if (event.getProperty().equals(FieldEditor.VALUE)) {
                updateState(true);
            }
        }
    });

    // provider selection

    // label
    Label providerLabel = new Label(parent, SWT.NONE);
    providerLabel.setText("Import as");

    // create provider combo
    ComboViewer providers = createProviders(parent);
    providers.getControl().setLayoutData(new GridData(SWT.FILL, SWT.BEGINNING, true, false, 3, 1));

    final Button relativeCheck = new Button(parent, SWT.CHECK);
    String text = "Use relative paths if possible.";
    relativeCheck.setText("Use relative paths if possible.");
    relativeCheck.addSelectionListener(new SelectionAdapter() {

        @Override
        public void widgetSelected(SelectionEvent e) {
            sourceFile.setUseRelativeIfPossible(relativeCheck.getSelection());
        }
    });
    if (!projectLocAvailable) {
        relativeCheck.setEnabled(false);
        text += " Only available once the project is saved to a file.";
    }
    relativeCheck.setText(text);
    relativeCheck.setLayoutData(new GridData(SWT.FILL, SWT.BEGINNING, true, false, 4, 1));

    // initial state update
    updateState(true);
}