Package webworks.message.list

Source Code of webworks.message.list.MessageListNamespace$MessageListNamespaceHolder

/*
* Copyright 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.
*/

package webworks.message.list;

import java.lang.ref.WeakReference;

import webworks.message.list.api.MessageListAddItemFunction;
import webworks.message.list.api.MessageListMarkAllReadFunction;
import webworks.message.list.api.MessageListGetItemFunction;
import webworks.message.list.api.MessageListInitFunction;
import webworks.message.list.api.MessageListItem;
import webworks.message.list.api.MessageListMarkReadFunction;
import webworks.message.list.api.MessageListRemoveItemFunction;
import webworks.message.list.api.MessageListUpdateItemFunction;
import webworks.message.list.model.CustomMessage;
import net.rim.device.api.script.Scriptable;
import net.rim.device.api.script.ScriptableFunction;
import net.rim.device.api.system.Application;

public class MessageListNamespace extends Scriptable
{
  public static final String FIELD_ONITEMOPENED = "onItemOpened";
  public static final String FIELD_ONITEMMARKEDREAD = "onItemMarkedRead";
  public static final String FIELD_ONITEMMARKEDUNREAD = "onItemMarkedUnread";
  public static final String FIELD_ONITEMDELETED = "onItemDeleted";
 
  private WeakReference _onItemOpened = new WeakReference(null);
  private WeakReference _onItemMarkedRead = new WeakReference(null);
  private WeakReference _onItemMarkedUnread = new WeakReference(null);
  private WeakReference _onItemDeleted = new WeakReference(null);
 
  private String _defaultNewImage = null;
  private String _defaultReadImage = null;
 
  private static long _GUID;


  private static class MessageListNamespaceHolder{
    public static final MessageListNamespace INSTANCE = new MessageListNamespace();
  }

  private MessageListNamespace() {
  }

  public static final MessageListNamespace getInstance(){
    return MessageListNamespaceHolder.INSTANCE;
  }

  public Object getField(String name) throws Exception
   {
      if (MessageListInitFunction.NAME.equals(name)) {
         return new MessageListInitFunction();     
      } else if (MessageListAddItemFunction.NAME.equals(name)) {
         return new MessageListAddItemFunction();     
      } else if (MessageListGetItemFunction.NAME.equals(name)) {
         return new MessageListGetItemFunction();     
      } else if (MessageListMarkAllReadFunction.NAME.equals(name)) {
         return new MessageListMarkAllReadFunction();     
      } else if (MessageListMarkReadFunction.NAME.equals(name)) {
         return new MessageListMarkReadFunction();
      } else if (MessageListRemoveItemFunction.NAME.equals(name)) {
         return new MessageListRemoveItemFunction();
      } else if (MessageListUpdateItemFunction.NAME.equals(name)) {
         return new MessageListUpdateItemFunction();
      } else if (FIELD_ONITEMOPENED.equals(name)) {
         return _onItemOpened.get();     
      } else if (FIELD_ONITEMMARKEDREAD.equals(name)) {
         return _onItemMarkedRead.get();     
      } else if (FIELD_ONITEMMARKEDUNREAD.equals(name)) {
         return _onItemMarkedUnread.get();     
      } else if (FIELD_ONITEMDELETED.equals(name)) {
         return _onItemDeleted.get();     
      }
     
      return super.getField(name)
   }
  
   public boolean putField(String field, Object value) throws Exception {
 
    if (FIELD_ONITEMOPENED.equals(field)) {
      _onItemOpened = new WeakReference(value);   
    } else if (FIELD_ONITEMMARKEDREAD.equals(field)) {
      _onItemMarkedRead = new WeakReference(value);
    } else if (FIELD_ONITEMMARKEDUNREAD.equals(field)) {
      _onItemMarkedUnread = new WeakReference(value);
    } else if (FIELD_ONITEMDELETED.equals(field)) {
      _onItemDeleted = new WeakReference(value);
    }
   
    return super.putField(field, value);
  }

  public ScriptableFunction getOnItemOpened() {
    Object nullCheck = _onItemOpened.get();
    if(nullCheck != null){
      return (ScriptableFunction)nullCheck;
    }else{
      return null;
    }
  }

  public ScriptableFunction getOnItemMarkedRead() {
    Object nullCheck = _onItemMarkedRead.get();
    if(nullCheck != null){
      return (ScriptableFunction)nullCheck;
    }else{
      return null;
    }
  }

  public ScriptableFunction getOnItemMarkedUnread() {
    Object nullCheck = _onItemMarkedUnread.get();
    if(nullCheck != null){
      return (ScriptableFunction)nullCheck;
    }else{
      return null;
    }
  }

  public ScriptableFunction getOnItemDeleted() {
    Object nullCheck = _onItemDeleted.get();
    if(nullCheck != null){
      return (ScriptableFunction)nullCheck;
    }else{
      return null;
    }
  }

  public String getDefaultNewImage() {
    return _defaultNewImage;
  }

  public String getDefaultReadImage() {
    return _defaultReadImage;
  }

  public void setDefaultNewImage(String value) {
    _defaultNewImage = value;
  }

  public void setDefaultReadImage(String value) {
    _defaultReadImage = value;
  }
       
  public static long getGUID() {
    return _GUID;
  }

  public static void setGUID(long GUID) {
    MessageListNamespace._GUID = GUID;
  }

  public void invokeItemOpen(final CustomMessage message) {
     
      if (getOnItemOpened() == null || message == null) {
        return;
      }
       
      Application.getApplication().invokeLater(new Runnable(){

        public void run() {
          try
          {
            MessageListItem item = new MessageListItem(message);
           
            Object[] result = new Object[] {item};
         
            // Pass the event back to the JavaScript callback
            ScriptableFunction onItemOpened = getOnItemOpened();
            onItemOpened.invoke(onItemOpened, result);
          }
          catch (Exception e) {
            throw new RuntimeException(e.getMessage());
          }
        }
      });
     
     }
  
   public void invokeItemMarkedRead(final CustomMessage message) {
     
      if (getOnItemMarkedRead() == null || message == null) {
        return;
      }
       
      Application.getApplication().invokeLater(new Runnable(){

        public void run() {
          try
          {
            MessageListItem item = new MessageListItem(message);
           
            Object[] result = new Object[]{item};
         
            // Pass the event back to the JavaScript callback
            ScriptableFunction onItemMarkedRead = getOnItemMarkedRead();
            onItemMarkedRead.invoke(onItemMarkedRead, result);
          }
          catch (Exception e) {
            throw new RuntimeException(e.getMessage());
          }
        }
      });
     }
  
   public void invokeItemMarkedUnread(final CustomMessage message) {
     
      if (getOnItemMarkedUnread() == null || message == null) {
        return;
      }
       
      Application.getApplication().invokeLater(new Runnable(){

        public void run() {
          try
          {
            MessageListItem item = new MessageListItem(message);
           
            Object[] result = new Object[]{item};
         
            // Pass the event back to the JavaScript callback
            ScriptableFunction onItemMarkedUnread = getOnItemMarkedUnread();
            onItemMarkedUnread.invoke(onItemMarkedUnread, result);
          }
          catch (Exception e) {
            throw new RuntimeException(e.getMessage());
          }
        }
      });
     }
    
     public void invokeItemDeleted(final CustomMessage message) {
     
     
      if (getOnItemDeleted() == null || message == null) {
        return;
      }
       
      Application.getApplication().invokeLater(new Runnable(){

        public void run() {
          try
          {
            MessageListItem item = new MessageListItem(message);
           
            Object[] result = new Object[]{item};
         
            // Pass the event back to the JavaScript callback
            ScriptableFunction onItemDeleted = getOnItemDeleted();
            onItemDeleted.invoke(onItemDeleted, result);
          }
          catch (Exception e) {
            throw new RuntimeException(e.getMessage());
          }
        }
      });
     }
 
}
TOP

Related Classes of webworks.message.list.MessageListNamespace$MessageListNamespaceHolder

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.