com.amazonaws.eclipse.dynamodb.editor.MultiValueAttributeEditorDialog.java Source code

Java tutorial

Introduction

Here is the source code for com.amazonaws.eclipse.dynamodb.editor.MultiValueAttributeEditorDialog.java

Source

/*
 * Copyright 2011-2012 Amazon Technologies, Inc.
 *
 * Licensed 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://aws.amazon.com/apache2.0
 *
 * This file 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 com.amazonaws.eclipse.dynamodb.editor;

import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.TableItem;
import org.eclipse.swt.widgets.Text;

import static com.amazonaws.eclipse.dynamodb.editor.AttributeValueEditor.STRING;
import static com.amazonaws.eclipse.dynamodb.editor.AttributeValueEditor.NUMBER;
import static com.amazonaws.eclipse.dynamodb.editor.AttributeValueUtil.S;
import static com.amazonaws.eclipse.dynamodb.editor.AttributeValueUtil.N;
import com.amazonaws.eclipse.core.AwsToolkitCore;
import com.amazonaws.eclipse.core.ui.MultiValueEditorDialog;
import com.amazonaws.services.dynamodbv2.model.AttributeValue;

/**
 * Simple table dialog to allow user to enter multiple values for an
 * attribute.
 */
class MultiValueAttributeEditorDialog extends MultiValueEditorDialog {

    private int scalarDataType;

    public MultiValueAttributeEditorDialog(final Shell parentShell, final AttributeValue attributeValue,
            int selectedType) {
        super(parentShell, "Edit values",
                AwsToolkitCore.getDefault().getImageRegistry().get(AwsToolkitCore.IMAGE_AWS_ICON), "",
                MessageDialog.NONE, new String[] { "Save set", "Save single value", "Cancel" }, 0);
        this.values.addAll(AttributeValueUtil.getValuesFromAttribute(attributeValue));

        String dataTypeDescription;
        switch (selectedType) {
        case STRING:
            dataTypeDescription = "(String set)";
            scalarDataType = S;
            break;
        case NUMBER:
            dataTypeDescription = "(Number set)";
            scalarDataType = N;
            break;
        default:
            dataTypeDescription = "";
            break;
        }
        addColumnTextDescription(dataTypeDescription);
    }

    @Override
    protected void createButtonsForButtonBar(Composite parent) {
        super.createButtonsForButtonBar(parent);
        this.getButton(1).setEnabled(values.size() == 1);
    }

    @Override
    protected void modifyValue(TableItem item, int column, int index, Text text) {
        super.modifyValue(item, column, index, text);
        this.getButton(1).setEnabled(values.size() == 1);
        this.getButtonBar().update();
    }

    @Override
    protected void lockTableEditor(int index) {
        /* Also lock the Save single value button */
        this.getButton(1).setEnabled(false);
        super.lockTableEditor(index);
    }

    @Override
    protected void unlockTableEditor() {
        /* Also unlock the Save single value button */
        this.getButton(1).setEnabled(values.size() == 1);
        super.unlockTableEditor();
    }

    @Override
    protected boolean validateAttributeValue(String attributeValue) {
        return AttributeValueUtil.validateScalarAttributeInput(attributeValue, scalarDataType, true);
    }

}