| /******************************************************************************* |
| * Copyright (c) 2007, 2008 IBM Corporation 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: |
| * Takashi ITOH - initial API and implementation |
| *******************************************************************************/ |
| |
| package org.eclipse.actf.model.flash; |
| |
| import org.eclipse.actf.visualization.gui.common.WebBrowserUtil; |
| import org.eclipse.swt.ole.win32.OLE; |
| import org.eclipse.swt.ole.win32.OleAutomation; |
| import org.eclipse.swt.ole.win32.Variant; |
| |
| |
| |
| public class FlashAdjust { |
| |
| public static final String ERROR_OK = "OK: "; //$NON-NLS-1$ |
| public static final String ERROR_NG = "NG: "; //$NON-NLS-1$ |
| public static final String ERROR_NA = "NA: "; //$NON-NLS-1$ |
| public static final String ERROR_WAIT = "WAIT: "; //$NON-NLS-1$ |
| |
| private Variant varFlash = null; |
| private OleAutomation flashAutomation = null; |
| |
| public FlashAdjust(Object flashObject/*, int validate*/) { |
| varFlash = WebBrowserUtil.getHTMLElementFromObject(flashObject); |
| if( null != varFlash && OLE.VT_DISPATCH==varFlash.getType() ) { |
| flashAutomation = varFlash.getAutomation(); |
| } |
| } |
| |
| public void dispose() { |
| if( null!=varFlash ) varFlash.dispose(); |
| } |
| |
| public void adjust(String newId) { |
| if( null==flashAutomation ) return; |
| |
| int[] idGetVariable = flashAutomation.getIDsOfNames(new String[]{"GetVariable"}); //$NON-NLS-1$ |
| if( null != flashAutomation.invoke(idGetVariable[0],new Variant[]{new Variant(ASBridge.ROOTLEVEL_PATH+".Eclipse_ACTF_is_available")}) || //$NON-NLS-1$ |
| null != flashAutomation.invoke(idGetVariable[0],new Variant[]{new Variant(ASBridge.BRIDGELEVEL_PATH+".Eclipse_ACTF_is_available")})) { //$NON-NLS-1$ |
| setErrorAttribute(ERROR_OK+"Flash DOM detected"); //$NON-NLS-1$ |
| return; |
| } |
| int[] idTagName = flashAutomation.getIDsOfNames(new String[]{"tagName"}); //$NON-NLS-1$ |
| if( null != idTagName ) { |
| Variant varTagName = flashAutomation.getProperty(idTagName[0]); |
| if( null!=varTagName && OLE.VT_BSTR==varTagName.getType() ) { |
| String strTagName = varTagName.getString(); |
| if( !"OBJECT".equalsIgnoreCase(strTagName) ) { //$NON-NLS-1$ |
| setErrorAttribute(ERROR_NG+strTagName+" tag is not supoported"); //$NON-NLS-1$ //$NON-NLS-2$ |
| return; |
| } |
| } |
| } |
| int[] idReadyState = flashAutomation.getIDsOfNames(new String[]{"ReadyState"}); //$NON-NLS-1$ |
| if( null!=idReadyState ) { |
| Variant varReadyState = flashAutomation.getProperty(idReadyState[0]); |
| if( null!=varReadyState && OLE.VT_I4==varReadyState.getType() ) { |
| int readyState = varReadyState.getInt(); |
| if( readyState < 4 ) { |
| setErrorAttribute(ERROR_WAIT+"Flash movie is not ready (ReadyState="+readyState+")"); //$NON-NLS-1$ //$NON-NLS-2$ |
| return; |
| } |
| } |
| } |
| setErrorAttribute(ERROR_NA+"Flash DOM is not available"); //$NON-NLS-1$ |
| } |
| |
| private void setErrorAttribute(String message) { |
| int[] idSetAttribute = flashAutomation.getIDsOfNames(new String[]{"setAttribute"}); //$NON-NLS-1$ |
| if( null != idSetAttribute ) { |
| flashAutomation.invoke(idSetAttribute[0],new Variant[]{new Variant("aDesignerError"),new Variant(message)}); //$NON-NLS-1$ |
| } |
| } |
| } |