/* Copyright (c) 2014 Wolfgang Imig This file is part of the library "Java Add-in for Microsoft Office". This file must be used according to the terms of MIT License, http://opensource.org/licenses/MIT */ package com.wilutions.joa.outlook.ex; import java.util.HashMap; import java.util.Map; import com.wilutions.com.ByRef; import com.wilutions.com.ComException; import com.wilutions.com.Dispatch; import com.wilutions.com.DispatchImpl; import com.wilutions.com.IDispatch; import com.wilutions.joa.ribbon.RibbonControls; import com.wilutions.mslib.office.IRibbonControl; import com.wilutions.mslib.outlook.Inspector; import com.wilutions.mslib.outlook.InspectorEvents_10; public class InspectorWrapper extends DispatchImpl implements InspectorEvents_10, Wrapper { protected Inspector inspector; protected IDispatch currentItem; protected Map<String, IRibbonControl> ribbonControlsDispatchReferences = new HashMap<String, IRibbonControl>(); /** * Ribbon control map. * This map contains objects from package com.wilutions.joa.ribbon. * It does not contain COM objects. */ protected RibbonControls ribbonControls = new RibbonControls(); /** * Constructor. Initializes a new object. Attaches the inspector events to * this. * * @param inspector * Inspector object. * @param currentItem * The inspector's current item. Sometimes the getCurrentItem * Method does not return the item after the inspector has been * opened. For this reason, it is passed explicitly here. * @throws ComException Thrown, if a COM related error occurs. */ public InspectorWrapper(Inspector inspector, IDispatch currentItem) throws ComException { this.inspector = inspector; this.currentItem = currentItem; Dispatch.withEvents(inspector, this); } public Inspector getInspector() { return inspector; } @Override public IDispatch getWrappedObject() { return getInspector(); } public <T> T getCurrentItemAs(Class<T> clazz) { return currentItem.as(clazz); } @Override public void onActivate() throws ComException { } @Override public void onDeactivate() throws ComException { } @Override public void onClose() throws ComException { ribbonControlsDispatchReferences.clear(); if (inspector != null) { inspector.releaseEvents(this); inspector.releaseComObject(); InspectorWrappers.remove(this); } inspector = null; currentItem = null; System.gc(); } @Override public void onBeforeMaximize(ByRef<Boolean> Cancel) throws ComException { } @Override public void onBeforeMinimize(ByRef<Boolean> Cancel) throws ComException { } @Override public void onBeforeMove(ByRef<Boolean> Cancel) throws ComException { } @Override public void onBeforeSize(ByRef<Boolean> Cancel) throws ComException { } @Override public void onPageChange(String ActivePageName) throws ComException { } @Override public void onAttachmentSelectionChange() throws ComException { } @Override public void addRibbonControlDispatchReference(IRibbonControl control) { ribbonControlsDispatchReferences.put(control.getId(), control); } @Override public RibbonControls getRibbonControls() { return ribbonControls; } }