com.nokia.tools.theme.s60.ui.cstore.CStoreManageContentDialog.java Source code

Java tutorial

Introduction

Here is the source code for com.nokia.tools.theme.s60.ui.cstore.CStoreManageContentDialog.java

Source

/*
* Copyright (c) 2006-2010 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.tools.theme.s60.ui.cstore;

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

import org.eclipse.jface.dialogs.IDialogConstants;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.jface.viewers.ISelectionChangedListener;
import org.eclipse.jface.viewers.IStructuredContentProvider;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.jface.viewers.ListViewer;
import org.eclipse.jface.viewers.SelectionChangedEvent;
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.jface.window.Window;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.KeyAdapter;
import org.eclipse.swt.events.KeyEvent;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.SelectionListener;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;

import com.nokia.tools.media.image.RenderedImageDescriptor;
import com.nokia.tools.platform.theme.SkinnableEntity;
import com.nokia.tools.platform.theme.ThemeException;
import com.nokia.tools.resource.util.StringUtils;
import com.nokia.tools.theme.content.ThemeData;
import com.nokia.tools.theme.s60.cstore.ComponentStore.StoredElement;
import com.nokia.tools.theme.s60.editing.EditableEntityImage;
import com.nokia.tools.ui.branding.util.BrandedTitleAreaDialog;

/**
 * Not used in current UI - was cancelled.
 * @deprecated
 */
public class CStoreManageContentDialog extends BrandedTitleAreaDialog {

    private ListViewer list;

    private Button deleteButton;

    private Composite rightComposite;

    private Label imagePreview;

    private IComponentStore store;

    private Text searchText;
    private String searchString = "";

    private List<String> filterTags = new ArrayList<String>();

    public CStoreManageContentDialog(Shell shell, int type) {
        this(shell, type, ComponentStoreFactory.getComponentStore());
    }

    public CStoreManageContentDialog(Shell shell, int type, IComponentStore store) {
        super(shell);
        setShellStyle(getShellStyle() | SWT.RESIZE);

        this.store = store;
    }

    /**
     * @see org.eclipse.jface.dialogs.Dialog#
     *      createDialogArea(org.eclipse.swt.widgets.Composite) Here we fill the
     *      center area of the dialog
     */
    protected Control createDialogArea(Composite parent) {

        Composite area = (Composite) super.createDialogArea(parent);

        Composite root = new Composite(area, SWT.None);
        root.setLayout(new GridLayout(2, false));

        { //filter bar 
            Composite searchRoot = new Composite(root, SWT.None);
            GridData gd = new GridData();
            gd.horizontalIndent = gd.verticalIndent = 0;
            GridLayout gridl = new GridLayout(3, false);
            searchRoot.setLayout(gridl);

            Label searchLabel = new Label(searchRoot, SWT.None);
            searchLabel.setText("Find:");

            searchText = new Text(searchRoot, SWT.BORDER);
            gd = new GridData(GridData.FILL_HORIZONTAL);
            gd.widthHint = 150;
            searchText.setLayoutData(gd);
            searchText.addKeyListener(new KeyAdapter() {
                @Override
                public void keyReleased(KeyEvent e) {
                    handleSearchTextKeyPress(e);
                }

            });

            //filter button
            Button filterButton = new Button(searchRoot, SWT.PUSH);
            filterButton.setText("Filters..");
            filterButton.addSelectionListener(new SelectionAdapter() {
                @Override
                public void widgetSelected(SelectionEvent e) {
                    handleFilterButtonSelected(e);
                }
            });

        }

        { //right composite
            rightComposite = new Composite(root, SWT.None);
            rightComposite.setLayout(new GridLayout());
            GridData gd = new GridData();
            gd.verticalSpan = 5;
            gd.verticalAlignment = SWT.TOP;
            gd.widthHint = 400;
            gd.heightHint = 400;
            rightComposite.setLayoutData(gd);

            org.eclipse.swt.widgets.Group preview = new org.eclipse.swt.widgets.Group(rightComposite, SWT.None);
            preview.setText("Preview");
            gd = new GridData(GridData.FILL_HORIZONTAL);
            gd.heightHint = 160;
            preview.setLayoutData(gd);
            preview.setLayout(new GridLayout());

            imagePreview = new Label(preview, SWT.BORDER);
            gd = new GridData();
            //gd.heightHint = 150;
            //gd.widthHint = 150;
            imagePreview.setLayoutData(gd);

            org.eclipse.swt.widgets.Group tagsGroup = new org.eclipse.swt.widgets.Group(rightComposite, SWT.None);
            tagsGroup.setText("Filter Tags");
            gd = new GridData(GridData.FILL_BOTH);
            tagsGroup.setLayoutData(gd);
            tagsGroup.setLayout(new FillLayout());

            Composite tagsRootComposite = new Composite(tagsGroup, SWT.None);
        }

        list = new ListViewer(root, SWT.MULTI | SWT.V_SCROLL | SWT.H_SCROLL | SWT.BORDER);
        GridData gd = new GridData(GridData.FILL_VERTICAL);
        gd.widthHint = gd.minimumWidth = 250;
        gd.heightHint = gd.minimumHeight = 300;
        list.getList().setLayoutData(gd);

        list.setContentProvider(new IStructuredContentProvider() {

            public void dispose() {
            }

            public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {

            }

            public Object[] getElements(Object inputElement) {

                if (StringUtils.isEmpty(searchString))
                    return ((List) inputElement).toArray();
                else {
                    List<StoredElement> result = new ArrayList<StoredElement>();
                    for (Object item : (List) inputElement) {
                        StoredElement elem = (StoredElement) item;
                        if (elem.name.toLowerCase().startsWith(searchString))
                            result.add(elem);
                    }
                    return result.toArray();
                }
            }
        });

        list.setLabelProvider(new LabelProvider() {
            @Override
            public String getText(Object e) {
                StoredElement element = (StoredElement) e;
                return element.name;
            }
        });

        deleteButton = new Button(root, SWT.PUSH);
        deleteButton.setText("Delete");
        deleteButton.addSelectionListener(new SelectionListener() {
            public void widgetDefaultSelected(SelectionEvent e) {
            }

            public void widgetSelected(SelectionEvent e) {
                performDeletePressed(e);
            }
        });
        deleteButton.setEnabled(false);

        list.addSelectionChangedListener(new ISelectionChangedListener() {
            public void selectionChanged(SelectionChangedEvent event) {
                updatePreview();
            }
        });

        list.setInput(store.getContents());

        return area;
    }

    protected void handleFilterButtonSelected(SelectionEvent e) {
        AcquireFilterTagsDialog dlg = new AcquireFilterTagsDialog(getShell(),
                ComponentStoreFactory.getComponentStore(), false, filterTags, "Select Filters");
        if (dlg.open() == Window.OK) {
            filterTags = dlg.getResultFilterTags();
            if (filterTags.size() > 0) {
                list.setInput(store.getFilteredContent(filterTags));
            } else
                list.setInput(store.getContents());
        }
    }

    protected void handleSearchTextKeyPress(KeyEvent e) {
        String oldStr = searchString;
        searchString = searchText.getText().toLowerCase();
        if (StringUtils.isEmpty(searchString))
            searchString = "";
        if (!searchString.equalsIgnoreCase(oldStr))
            list.refresh();
    }

    protected void updatePreview() {

        IStructuredSelection sel = (IStructuredSelection) list.getSelection();

        if (imagePreview.getImage() != null)
            imagePreview.getImage().dispose();
        imagePreview.setImage(null);

        if (sel.isEmpty()) {
            deleteButton.setEnabled(false);
        } else {
            deleteButton.setEnabled(true);
            StoredElement selected = (StoredElement) sel.getFirstElement();
            ThemeData td = (ThemeData) selected.link;
            SkinnableEntity ske = (SkinnableEntity) td.getData();
            try {
                EditableEntityImage img = new EditableEntityImage(ske, null, null, 150, 150, 255);
                ImageDescriptor imgdesc = new RenderedImageDescriptor(img.getAggregateImage());
                imagePreview.setImage(imgdesc.createImage());
            } catch (ThemeException e) {
                e.printStackTrace();
            }
        }

        imagePreview.getParent().layout(true);
        rightComposite.layout(true);
        rightComposite.getParent().pack(true);
    }

    private static void clearComposite(Composite cc) {
        for (Control c : cc.getChildren()) {
            if (c instanceof Label && ((Label) c).getImage() != null)
                ((Label) c).getImage().dispose();
            c.dispose();
        }
    }

    protected void performDeletePressed(SelectionEvent e) {

    }

    protected void createButtonsForButtonBar(Composite parent) {
        createButton(parent, IDialogConstants.OK_ID, IDialogConstants.OK_LABEL, true);
        createButton(parent, IDialogConstants.CANCEL_ID, IDialogConstants.CANCEL_LABEL, false);
    }

    @Override
    protected void okPressed() {
        super.okPressed();
    }

    @Override
    protected ImageDescriptor getBannerIconDescriptor() {

        return null;
    }

    @Override
    protected String getTitle() {
        return "Component Store";
    }
}