view com.redhat.thermostat.tools.eclipse.plugin/src/com/redhat/thermostat/tools/eclipse/plugin/editor/ExtensionsMasterDetailsBlock.java @ 99:7484f4e4f587

Fix dirty states in master blocks Use a SectionPart to manage dirty states. Notify it when dirty and let it fix up dirty flag on save automatically.
author Omair Majid <omajid@redhat.com>
date Fri, 07 Feb 2014 13:24:10 -0500
parents 1c835942f3c2
children
line wrap: on
line source

package com.redhat.thermostat.tools.eclipse.plugin.editor;

import org.eclipse.jface.window.Window;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.forms.DetailsPart;

import com.redhat.thermostat.tools.eclipse.plugin.Messages;
import com.redhat.thermostat.tools.eclipse.plugin.model.Extension;
import com.redhat.thermostat.tools.eclipse.plugin.model.Plugin;

/**
 * The master of the "Extensions" page. Shows a list of all extensions.
 */
public class ExtensionsMasterDetailsBlock extends BaseMasterDetailsBlock {

    private ExtensionEditPage editPage;

    public ExtensionsMasterDetailsBlock(ExtensionsPage extensionsPage) {
        editPage = new ExtensionEditPage(extensionsPage);
    }

    public void setModel(Plugin model) {
        super.setModel(model);

        editPage.setModel(model);
    }

    @Override
    protected void registerPages(DetailsPart detailsPart) {
        detailsPart.registerPage(String.class, editPage);
    }

    @Override
    String getSectionTitle() {
        return Messages.ExtensionsMasterDetailsBlock_title;
    }


    @Override
    String getSectionDescription() {
        return Messages.ExtensionsMasterDetailsBlock_description;
    }

    @Override
    Object[] getListViewModel() {
        return model.getExtensionNames().toArray();
    }

    @Override
    void addButtonSelected(Shell shell) {
        NewNameDialog dialog = new NewNameDialog(shell);
        dialog.create();
        if (dialog.open() == Window.OK) {
            Extension newExtension = new Extension();
            newExtension.setName(dialog.getName());
            model.addExtension(newExtension);
            sectionPart.markDirty();
        }
    }

    @Override
    void removeButtonSelected(Object selectedItem) {
        if (selectedItem == null) {
            return;
        }

        model.removeExtension((String) selectedItem);
        sectionPart.markDirty();
    };

}