org.eclipse.php.composer.ui.controller.PackageController.java Source code

Java tutorial

Introduction

Here is the source code for org.eclipse.php.composer.ui.controller.PackageController.java

Source

/*******************************************************************************
 * Copyright (c) 2012, 2016, 2017 PDT Extension Group and others.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 *     PDT Extension Group - initial API and implementation
 *     Kaloyan Raev - [501269] externalize strings
 *******************************************************************************/
package org.eclipse.php.composer.ui.controller;

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

import org.eclipse.jface.viewers.*;
import org.eclipse.php.composer.api.MinimalPackage;
import org.eclipse.php.composer.ui.ComposerUIPluginImages;
import org.eclipse.swt.graphics.Image;

public class PackageController extends StyledCellLabelProvider
        implements IStructuredContentProvider, ICheckStateProvider, ICheckStateListener {

    private List<MinimalPackage> packages;
    private List<String> checked = new ArrayList<String>();
    protected static Image pkgImage = ComposerUIPluginImages.PACKAGE.createImage();
    protected static Image phpImage = ComposerUIPluginImages.PHP.createImage();
    protected List<IPackageCheckStateChangedListener> pkgListeners = new ArrayList<IPackageCheckStateChangedListener>();

    public void addPackageCheckStateChangedListener(IPackageCheckStateChangedListener listener) {
        if (!pkgListeners.contains(listener)) {
            pkgListeners.add(listener);
        }
    }

    public void removePackageCheckStateChangedListener(IPackageCheckStateChangedListener listener) {
        pkgListeners.remove(listener);
    }

    @SuppressWarnings("unchecked")
    public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
        if (newInput == null) {
            packages = null;
        } else {
            packages = (List<MinimalPackage>) newInput;
        }
    }

    public Object[] getElements(Object inputElement) {
        if (packages != null) {
            return packages.toArray();
        } else {
            return null;
        }
    }

    public void addPackages(List<MinimalPackage> packages) {
        this.packages.addAll(packages);
    }

    public Image getImage(Object element) {
        return PackageController.getPackageImage(element);
    }

    public static Image getPackageImage(Object element) {
        String name = PackageController.getPackageName(element);
        if (!name.contains("/") && (name.equals("php") || name.startsWith("ext-"))) { //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
            return phpImage;
        }
        return pkgImage;
    }

    public String getText(Object element) {
        return getName(element);
    }

    @Override
    public void checkStateChanged(CheckStateChangedEvent event) {
        setChecked(((MinimalPackage) event.getElement()).getName(), event.getChecked());
    }

    public List<String> getCheckedPackages() {
        return checked;
    }

    public int getCheckedPackagesCount() {
        return checked.size();
    }

    public void clear() {
        checked.clear();
    }

    public void setChecked(String name, boolean checked) {
        if (checked && !this.checked.contains(name)) {
            this.checked.add(name);
        }

        if (!checked) {
            this.checked.remove(name);
        }

        for (IPackageCheckStateChangedListener listener : pkgListeners) {
            listener.packageCheckStateChanged(name, checked);
        }
    }

    private String getName(Object element) {
        return PackageController.getPackageName(element);
    }

    public static String getPackageName(Object element) {
        String name = null;
        if (element instanceof MinimalPackage) {
            name = ((MinimalPackage) element).getName();
        } else if (element instanceof String) {
            name = (String) element;
        }
        return name;
    }

    public void update(ViewerCell cell) {
        Object obj = cell.getElement();

        if (obj instanceof MinimalPackage) {
            MinimalPackage pkg = (MinimalPackage) obj;

            StyledString styledString = new StyledString();

            // if (author.getEmail() != null && author.getEmail().trim() != ""
            // && !author.getEmail().trim().equals("")) {
            // styledString.append(" <" + author.getEmail().trim() + ">",
            // StyledString.COUNTER_STYLER);
            // }
            //
            // if (author.getHomepage() != null && author.getHomepage().trim()
            // != "" && !author.getHomepage().trim().equals("")) {
            // styledString.append(" - " + author.getHomepage().trim(),
            // StyledString.DECORATIONS_STYLER);
            // }
            updateText(pkg, styledString);

            cell.setText(styledString.toString());
            cell.setStyleRanges(styledString.getStyleRanges());

            cell.setImage(getImage(pkg));

            super.update(cell);
        }
    }

    protected void updateText(MinimalPackage pkg, StyledString styledString) {
        styledString.append(getName(pkg));
    }

    @Override
    public boolean isChecked(Object element) {
        return checked.contains(getName(element));
    }

    @Override
    public boolean isGrayed(Object element) {
        // TODO Auto-generated method stub
        return false;
    }
}