com.google.appinventor.client.editor.simple.palette.ComponentRemoveWidget.java Source code

Java tutorial

Introduction

Here is the source code for com.google.appinventor.client.editor.simple.palette.ComponentRemoveWidget.java

Source

// -*- mode: java; c-basic-offset: 2; -*-
// Copyright 2015-2016 MIT, All rights reserved
// Released under the Apache License, Version 2.0
// http://www.apache.org/licenses/LICENSE-2.0

package com.google.appinventor.client.editor.simple.palette;

import com.google.appinventor.client.Images;
import com.google.appinventor.client.Ode;
import com.google.appinventor.client.editor.simple.SimpleComponentDatabase;
import com.google.appinventor.client.editor.youngandroid.YaBlocksEditor;
import com.google.appinventor.client.editor.youngandroid.YaProjectEditor;
import com.google.gwt.resources.client.ImageResource;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.AbstractImagePrototype;
import com.google.gwt.user.client.ui.ClickListener;
import com.google.gwt.user.client.ui.Image;
import com.google.gwt.user.client.ui.Widget;

import static com.google.appinventor.client.Ode.MESSAGES;

/**
 * Defines a widget that has the appearance of a red close button.
 * The Widget is clicked to delete the associated component
 */
public class ComponentRemoveWidget extends Image {
    private static ImageResource imageResource = null;

    private static Ode ode = Ode.getInstance();

    private final SimpleComponentDescriptor scd;

    public ComponentRemoveWidget(SimpleComponentDescriptor simpleComponentDescriptor) {
        if (imageResource == null) {
            Images images = Ode.getImageBundle();
            imageResource = images.deleteComponent();
        }
        this.scd = simpleComponentDescriptor;
        AbstractImagePrototype.create(imageResource).applyTo(this);
        addClickListener(new ClickListener() {

            @Override
            public void onClick(Widget widget) {
                if (Window.confirm(MESSAGES.reallyRemoveComponent())) {
                    long projectId = ode.getCurrentYoungAndroidProjectId();
                    YaProjectEditor projectEditor = (YaProjectEditor) ode.getEditorManager()
                            .getOpenProjectEditor(projectId);
                    SimpleComponentDatabase componentDatabase = SimpleComponentDatabase.getInstance();
                    componentDatabase.addComponentDatabaseListener(projectEditor);
                    componentDatabase.removeComponent(scd.getName());
                }
            }
        });
    }
}