com.bmw.spdxeditor.SPDXPreferencesPage.java Source code

Java tutorial

Introduction

Here is the source code for com.bmw.spdxeditor.SPDXPreferencesPage.java

Source

/**
 * Copyright (C) 2012, Bayerische Motoren Werke Aktiengesellschaft (BMW AG)
 * 
 * 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://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 com.bmw.spdxeditor;

import org.apache.commons.lang3.StringUtils;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.jface.preference.PreferencePage;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Combo;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Group;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Text;
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.IWorkbenchPreferencePage;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.spdx.rdfparser.InvalidSPDXAnalysisException;

import com.bmw.spdxeditor.editors.spdx.SPDXEditor;

/**
 * 
 * @author Johannes Klein (johannes.klein@bmw.de)
 *
 */
public class SPDXPreferencesPage extends PreferencePage implements IWorkbenchPreferencePage {
    private Combo creatorTypes;
    private Text creatorText;
    private static String DEFAULT_FILE_CREATOR = "SPDX_DEFAULT_FILE_CREATOR";
    private static Logger logger = LoggerFactory.getLogger(SPDXPreferencesPage.class);

    public SPDXPreferencesPage() {

    }

    public SPDXPreferencesPage(String title) {
        super(title);

    }

    public SPDXPreferencesPage(String title, ImageDescriptor image) {
        super(title, image);

    }

    @Override
    public void init(IWorkbench workbench) {
    }

    protected IPreferenceStore doGetPreferenceStore() {
        return Activator.getDefault().getPreferenceStore();
    }

    @Override
    protected Control createContents(Composite parent) {
        IPreferenceStore store = getPreferenceStore();
        String fileCreatorValue = store.getString(DEFAULT_FILE_CREATOR);
        String fileCreatorType = null;
        if (StringUtils.isEmpty(fileCreatorValue)) {
            fileCreatorValue = "NOASSERTION";
            fileCreatorType = "";
        } else {
            fileCreatorType = StringUtils.substringBefore(fileCreatorValue, ":");
            fileCreatorValue = StringUtils.substringAfter(fileCreatorValue, ":").trim();
        }

        // Describe layout for this group panel
        GridLayout gridLayout = new GridLayout();
        gridLayout.numColumns = 3;
        parent.setLayout(gridLayout);

        Label lbl = new Label(parent, SWT.NONE);
        lbl.setText("Package creator default");

        // Person, Organization, Tool
        String items[] = { "Person", "Organization", "Tool", "" };
        creatorTypes = new Combo(parent, SWT.READ_ONLY);
        creatorTypes.setItems(items);
        creatorTypes.setText(fileCreatorType);

        creatorText = new Text(parent, SWT.BORDER);
        creatorText.setText(fileCreatorValue);

        return null;
    }

    protected void performDefaults() {
        creatorTypes.setText("");
        creatorText.setText("NOASSERTION");
    }

    protected void performApply() {
        System.out.println("performApply");
        IPreferenceStore store = getPreferenceStore();
        if (creatorText.getText().equalsIgnoreCase("noassertion")) {
            store.setValue(DEFAULT_FILE_CREATOR, "NOASSERTION");
        } else if (StringUtils.isEmpty(creatorTypes.getText())) {
            MessageDialog.openError(getShell(), "Error", "Select value in dropdown box first.");
        } else if (StringUtils.isEmpty(creatorText.getText())) {
            MessageDialog.openError(getShell(), "Error", "Enter value for creator name.");
        } else {
            String defaultCreator = creatorTypes.getText() + ":" + creatorText.getText();
            logger.info("Default creator set to: {}", defaultCreator);
            store.setValue(DEFAULT_FILE_CREATOR, defaultCreator);
            MessageDialog.openInformation(getShell(), "Creator set", "Default SPDX file creator has been set.");
        }
        System.out.println("storeNeedsSaving: " + store.needsSaving());
    }

}