com.nokia.s60ct.gui.actions.CreateDuplicateAction.java Source code

Java tutorial

Introduction

Here is the source code for com.nokia.s60ct.gui.actions.CreateDuplicateAction.java

Source

/*
* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). 
* All rights reserved.
* This component and the accompanying materials are made available
* under the terms of "Eclipse Public License v1.0"
* which accompanies this distribution, and is available
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
*
* Initial Contributors:
* Nokia Corporation - initial contribution.
*
* Contributors:
*
* Description:
*
*/
package com.nokia.s60ct.gui.actions;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import org.eclipse.emf.common.command.Command;
import org.eclipse.emf.common.util.EList;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.edit.command.AddCommand;
import org.eclipse.emf.edit.command.CommandParameter;
import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain;
import org.eclipse.emf.edit.domain.EditingDomain;
import org.eclipse.jface.action.IAction;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.ui.IObjectActionDelegate;
import org.eclipse.ui.IWorkbenchPart;

import s60ct.provider.SequenceMenuItemProvider;
import configurationemf.ConfigurationemfPackage;
import configurationemf.EXTENSION_POLICY;
import configurationemf.Frame;
import configurationemf.LeafSetting;
import configurationemf.LeafSettingDelegator;
import configurationemf.ParentSetting;

public class CreateDuplicateAction implements IObjectActionDelegate {
    List<EObject> selectedObjects = new ArrayList<EObject>();
    SequenceMenuItemProvider itemProvider = new SequenceMenuItemProvider(null);
    Frame frame = null;

    @Override
    public void setActivePart(IAction action, IWorkbenchPart targetPart) {
        ParentSetting parentSetting = (ParentSetting) frame.eContainer();
        EditingDomain editingDomain = AdapterFactoryEditingDomain.getEditingDomainFor(parentSetting);
    }

    public void run(IAction action) {
        ParentSetting parentSetting = (ParentSetting) frame.eContainer();
        EditingDomain editingDomain = AdapterFactoryEditingDomain.getEditingDomainFor(parentSetting);

        EXTENSION_POLICY ex = parentSetting.getCurrentExtensionPolicy();

        Command command = itemProvider.createCommand(parentSetting, editingDomain, AddCommand.class,
                new CommandParameter(parentSetting, ConfigurationemfPackage.eINSTANCE.getParentSetting_Frames(),
                        null));
        editingDomain.getCommandStack().execute(command);

        List currentList = parentSetting.getMyCurrentFrames();
        Frame duplicate = (Frame) currentList.get(currentList.size() - 1);

        EList<LeafSettingDelegator> ls = duplicate.getLeafSettings();
        Iterator it = ls.iterator();
        while (it.hasNext()) {
            LeafSettingDelegator lsd = (LeafSettingDelegator) it.next();
            LeafSetting leafSetting = lsd.getLeafSetting();
            EList<LeafSettingDelegator> ls2 = frame.getLeafSettings();
            Iterator it2 = ls2.iterator();
            while (it2.hasNext()) {
                LeafSettingDelegator lsd2 = (LeafSettingDelegator) it2.next();
                LeafSetting leafSetting2 = lsd2.getLeafSetting();
                if (leafSetting2.getAbsRef().equals(leafSetting.getAbsRef())) {
                    if (lsd2.getValue() == null)
                        lsd.setValue(new String(""));
                    else
                        lsd.setValue(new String(lsd2.getValue()));

                }
            }
        }

    }

    public void selectionChanged(IAction action, ISelection selection) {
        selectedObjects.clear();
        if (selection instanceof IStructuredSelection) {
            IStructuredSelection structedSelection = (IStructuredSelection) selection;
            Object[] objects = structedSelection.toArray();
            if (objects.length != 0) {
                Frame frame = (Frame) objects[0];

                if (frame.isTemplate()) {
                    action.setEnabled(false);
                } else {
                    this.frame = frame;
                    action.setEnabled(true);
                }
            }
        }

    }

}