Package com.rim.samples.device.unifiedsearchdemo

Source Code of com.rim.samples.device.unifiedsearchdemo.UnifiedSearchDemoPublisherScreen

/*
* UnifiedSearchDemoPublisherScreen.java
*
* Copyright � 1998-2011 Research In Motion Limited
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* Note: For the sake of simplicity, this sample application may not leverage
* resource bundles and resource strings.  However, it is STRONGLY recommended
* that application developers make use of the localization features available
* within the BlackBerry development platform to ensure a seamless application
* experience across a variety of languages and geographies.  For more information
* on localizing your application, please refer to the BlackBerry Java Development
* Environment Development Guide associated with this release.
*/

package com.rim.samples.device.unifiedsearchdemo;

import java.io.IOException;
import java.io.InputStream;
import java.util.Vector;

import net.rim.device.api.ui.Color;
import net.rim.device.api.ui.Field;
import net.rim.device.api.ui.FieldChangeListener;
import net.rim.device.api.ui.Screen;
import net.rim.device.api.ui.UiApplication;
import net.rim.device.api.ui.component.ButtonField;
import net.rim.device.api.ui.component.Dialog;
import net.rim.device.api.ui.component.LabelField;
import net.rim.device.api.ui.component.ObjectListField;
import net.rim.device.api.ui.component.SeparatorField;
import net.rim.device.api.ui.container.MainScreen;
import net.rim.device.api.ui.container.VerticalFieldManager;
import net.rim.device.api.ui.decor.BackgroundFactory;
import net.rim.device.api.unifiedsearch.searchables.SearchableContentTypeConstants;

/**
* The publisher screen for the Unified Search Demo Application
*/
public class UnifiedSearchDemoPublisherScreen extends MainScreen implements
        FieldChangeListener {
    private LabelField _listTitle;
    private ObjectListField _listField;
    private ButtonField _addButton;
    private ButtonField _publishButton;
    private ButtonField _searchButton;
    private ButtonField _addFromFileButton;
    private final Vector _dataObjects;
    private final UnifiedSearchDemoPublisher _publisher;

    /**
     * Creates a new UnifiedSearchDemoPublisherScreen object
     */
    public UnifiedSearchDemoPublisherScreen(
            final UnifiedSearchDemoPublisher publisher) {
        super(NO_VERTICAL_SCROLL);

        _publisher = publisher;

        _dataObjects = new Vector();

        createUI();
    }

    /**
     * @see net.rim.device.api.ui.Screen#onSavePrompt()
     */
    protected boolean onSavePrompt() {
        if (_dataObjects.size() == 0) {
            // Suppress the save dialog
            return true;
        }

        return super.onSavePrompt();
    }

    /**
     * @see Screen#save()
     */
    public void save() {
        _publisher.insertData(_dataObjects);

        // Clear data from the collection and list
        _dataObjects.removeAllElements();
        _listField.set(null);
        setDirty(false);
    }

    /**
     * Adds some data to the screen's collection
     */
    private void onAddData() {
        // Add new data to collection
        _dataObjects.addElement(new UnifiedSearchDemoDataObject("Rim One",
                "175 Columbia St",
                SearchableContentTypeConstants.CONTENT_TYPE_LOCATION));
        _dataObjects.addElement(new UnifiedSearchDemoDataObject("Rim Two",
                "295 Phillip St",
                SearchableContentTypeConstants.CONTENT_TYPE_LOCATION));
        _dataObjects.addElement(new UnifiedSearchDemoDataObject("Rim Three",
                "185 Columbia St",
                SearchableContentTypeConstants.CONTENT_TYPE_LOCATION));
        _dataObjects.addElement(new UnifiedSearchDemoDataObject("John Graham",
                "aaa@bbb.com",
                SearchableContentTypeConstants.CONTENT_TYPE_CONTACTS));
        _dataObjects.addElement(new UnifiedSearchDemoDataObject("BlackBerry",
                "http://mobile.blackberry.com",
                SearchableContentTypeConstants.CONTENT_TYPE_BROWSER));

        updateData();
    }

    /**
     * Updates the screen's list of data
     */
    private void updateData() {
        // Update the UI list to display the new data
        final Object[] elementArray = new Object[_dataObjects.size()];
        _dataObjects.copyInto(elementArray);
        _listField.set(elementArray);
    }

    /**
     * Retrieves data objects represented in a file
     */
    private void onAddFromFile() {
        final InputStream is = getClass().getResourceAsStream("/data.txt");
        if (is == null) {
            UnifiedSearchDemo.errorDialog("Could not find file resource");
        } else {
            try {
                final Vector objectsFromFile =
                        UnifiedSearchDemoFileReader.getDataFromStream(is);
                if (objectsFromFile != null) {
                    final int size = objectsFromFile.size();
                    for (int i = 0; i < size; ++i) {
                        _dataObjects.addElement(objectsFromFile.elementAt(i));
                    }
                    updateData();
                }
            } catch (final IOException ioe) {
                UnifiedSearchDemo.errorDialog("Could not add data from file: "
                        + ioe.getMessage());
            }
        }
    }

    /**
     * Creates the user interface for the screen
     */
    private void createUI() {
        setTitle("Unified Search Demo");

        // Add a label for the list
        _listTitle = new LabelField("Data: ", Field.USE_ALL_WIDTH);
        _listTitle.setBackground(BackgroundFactory
                .createSolidTransparentBackground(Color.DARKBLUE, 128));
        add(_listTitle);

        // Create list field
        _listField = new ObjectListField();

        // Initialize buttons
        _addButton = new ButtonField("Add Data", ButtonField.CONSUME_CLICK);
        _addFromFileButton =
                new ButtonField("Add From File", ButtonField.CONSUME_CLICK);
        _publishButton =
                new ButtonField("Publish Data", ButtonField.CONSUME_CLICK);
        _searchButton = new ButtonField("Search", ButtonField.CONSUME_CLICK);
        _addButton.setChangeListener(this);
        _publishButton.setChangeListener(this);
        _addFromFileButton.setChangeListener(this);
        _searchButton.setChangeListener(this);

        // Add fields to manager
        final VerticalFieldManager vfm =
                new VerticalFieldManager(VERTICAL_SCROLL);
        vfm.add(_listField);
        vfm.add(new SeparatorField());
        vfm.add(_addButton);
        vfm.add(new SeparatorField());
        vfm.add(_addFromFileButton);
        vfm.add(new SeparatorField());
        vfm.add(_publishButton);
        vfm.add(new SeparatorField());
        vfm.add(_searchButton);

        add(vfm);
    }

    /**
     * @see FieldChangeListener#fieldChanged(Field, int)
     */
    public void fieldChanged(final Field field, final int context) {
        if (field == _addButton) {
            onAddData();
        } else if (field == _searchButton) {
            UiApplication.getUiApplication().pushScreen(
                    new UnifiedSearchDemoSearchScreen());
        } else if (field == _addFromFileButton) {
            onAddFromFile();
        } else if (field == _publishButton) {
            if (_dataObjects.size() == 0) {
                Dialog.alert("No data to publish");
            } else {
                save();
            }
        }
    }
}
TOP

Related Classes of com.rim.samples.device.unifiedsearchdemo.UnifiedSearchDemoPublisherScreen

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.