/* Copyright (c) 2015 Wolfgang Imig This file is part of the library "JOA Issue Tracker for Microsoft Outlook". This file must be used according to the terms of MIT License, http://opensource.org/licenses/MIT */ package com.wilutions.itol; import java.io.IOException; import java.util.ResourceBundle; import com.wilutions.com.ComException; import com.wilutions.com.IDispatch; import com.wilutions.joa.fx.MessageBox; import com.wilutions.joa.outlook.ex.InspectorWrapper; import com.wilutions.joa.outlook.ex.Wrapper; import com.wilutions.joa.ribbon.RibbonButton; import com.wilutions.joa.ribbon.RibbonGroup; import com.wilutions.mslib.office.IRibbonControl; import com.wilutions.mslib.outlook.Inspector; import com.wilutions.mslib.outlook.MailItem; public class MailInspector extends InspectorWrapper implements MyWrapper { private IssueTaskPane issuePane; private ResourceBundle resb = Globals.getResourceBundle(); public MailInspector(Inspector inspector, IDispatch currentItem) throws ComException, IOException { super(inspector, currentItem); initRibbonControls(); } private void initRibbonControls() { @SuppressWarnings("unused") RibbonGroup grpIssue = getRibbonControls().group("grpIssue", resb.getString("Ribbon.grpIssue")); RibbonButton bnNewIssue = getRibbonControls().button("bnNewIssue", resb.getString("Ribbon.NewIssue")); bnNewIssue.setImage("IssueTaskPaneIcon-1a.png"); bnNewIssue.setOnAction((IRibbonControl control, Wrapper context, Boolean pressed) -> { ItolAddin addin = (ItolAddin) Globals.getThisAddin(); addin.showIssuePane(control, context, pressed); }); } @Override public IssueMailItem getSelectedItem() { return new IssueMailItemImpl(currentItem.as(MailItem.class)); } public void setIssueTaskPaneVisible(boolean visible) { if (issuePane == null) { issuePane = new IssueTaskPane(this); } if (!issuePane.hasWindow() && visible) { String title = Globals.getResourceBundle().getString("IssueTaskPane.title"); Globals.getThisAddin().createTaskPaneWindowAsync(issuePane, title, inspector, (succ, ex) -> { if (ex != null) { MessageBox.show(inspector, "Error", ex.getMessage(), null); } }); } else { issuePane.setVisible(visible); } } public boolean isIssueTaskPaneVisible() { return issuePane != null && issuePane.hasWindow() && issuePane.isVisible(); } @Override public void onClose() throws ComException { if (issuePane != null) { issuePane.close(); } super.onClose(); } }