/* * Copyright (c) 2005,2006 Declarative Engineering LLC. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Declarative Engineering LLC * verson 1 which accompanies this distribution, and is available at * http://declarativeengineering.com/legal/DE_Developer_License_v1.txt */ package com.foundation.view.swt; import org.eclipse.swt.graphics.Rectangle; import org.eclipse.swt.widgets.Display; import com.common.comparison.Comparator; import com.common.util.LiteHashMap; import com.foundation.view.DisplayMetadata; import com.foundation.view.IViewContext; import com.foundation.view.IViewRequestHandler; import com.foundation.view.ViewSystemMetadata; /* * This class provides access to the non-view specific view system functionality. */ public class SwtWrapperViewContext implements IViewContext { /** The one and only SWT view context object. */ private SwtWrapperRequestHandler requestHandler = null; /** An application data map that allows the application to store key value pairs associated with the view context. */ private LiteHashMap applicationDataMap = null; /** The application specific context data. */ private Object applicationData = null; /** * SwtWrapperViewContext constructor. * @param display The display that is supported. */ public SwtWrapperViewContext(Display display) { super(); requestHandler = new SwtWrapperRequestHandler(display); }//SwtWrapperViewContext()// /* (non-Javadoc) * @see com.foundation.view.IViewContext#getViewSystemMetadata() */ public ViewSystemMetadata getViewSystemMetadata() { org.eclipse.swt.widgets.Monitor[] monitors = ((SwtWrapperRequestHandler) getRequestHandler()).getDisplay().getMonitors(); DisplayMetadata[] displayMetadata = new DisplayMetadata[monitors.length]; ViewSystemMetadata viewSystemMetadata = new ViewSystemMetadata(displayMetadata); //Collect information about each monitor.// for(int monitorIndex = 0; monitorIndex < monitors.length; monitorIndex++) { Rectangle bounds = monitors[monitorIndex].getBounds(); Rectangle clientArea = monitors[monitorIndex].getClientArea(); displayMetadata[monitorIndex] = new DisplayMetadata(new int[] {bounds.x, bounds.y, bounds.width, bounds.height}, new int[] {clientArea.x, clientArea.y, clientArea.width, clientArea.height}); }//for// return viewSystemMetadata; }//getViewSystemMetadata()// /* (non-Javadoc) * @see com.foundation.view.IViewContext#getRequestHandler() */ public IViewRequestHandler getRequestHandler() { return requestHandler; }//getRequestHandler()// /* (non-Javadoc) * @see com.foundation.view.IViewContext#getApplicationData() */ public Object getApplicationData() { return applicationData; }//getApplicationData()// /* (non-Javadoc) * @see com.foundation.view.IViewContext#setApplicationData(java.lang.Object) */ public void setApplicationData(Object applicationData) { this.applicationData = applicationData; }//setApplicationData()// /* (non-Javadoc) * @see com.foundation.view.IViewContext#getApplicationData(java.lang.Object) */ public Object getApplicationData(Object key) { return applicationDataMap == null ? null : applicationDataMap.get(key); }//getApplicationData()// /* (non-Javadoc) * @see com.foundation.view.IViewContext#setApplicationData(java.lang.Object, java.lang.Object) */ public void setApplicationData(Object key, Object applicationData) { if(applicationDataMap == null) { applicationDataMap = new LiteHashMap(10, Comparator.getLogicalComparator(), Comparator.getLogicalComparator()); }//if// applicationDataMap.put(key, applicationData); }//setApplicationData()// }//SwtWrapperViewContext//