package swaddin; import com.wilutions.com.BackgTask; import com.wilutions.com.CoClass; import com.wilutions.com.Dispatch; import com.wilutions.joa.DeclAddin; import com.wilutions.joa.IconManager; import com.wilutions.joa.LoadBehavior; import com.wilutions.joa.OfficeApplication; import com.wilutions.joa.outlook.OutlookAddin; import com.wilutions.joa.swing.MessageBoxSwing; import com.wilutions.mslib.office.IRibbonControl; import com.wilutions.mslib.office.IRibbonUI; import com.wilutions.mslib.outlook._Explorer; /** * This example uses Swing UI components. */ @CoClass(progId = "SwingAddin.Class", guid = "{4ba197f5-81d6-4150-a710-4d6a30fd7a38}") @DeclAddin(application = OfficeApplication.Outlook, loadBehavior = LoadBehavior.LoadOnStart, friendlyName = "Swing Addin", description = "Java Swing Outlook Addin Example.") public class SwingAddin extends OutlookAddin { ExplorerTaskPane taskPane = new ExplorerTaskPane(); final IconManager ribbonIcons; private IRibbonUI ribbon; public SwingAddin() { Globals.setThisAddin(this); ribbonIcons = new IconManager(this); } public IRibbonUI getRibbon() { return ribbon; } public void onLoadRibbon(IRibbonUI ribbon) { this.ribbon = ribbon; } public void onSmileButtonClicked(IRibbonControl control) { _Explorer owner = Globals.getThisAddin().getApplication().ActiveExplorer(); MessageBoxSwing.show(owner, "Dialog Title", "You pressed the Smile button", (ret, ex) -> { System.out.println("msgbox button=" + ret); }); } public Dispatch onSmileButton2GetImage(IRibbonControl control) { Dispatch picdisp = ribbonIcons.get("MyHappyFaceIcon.png"); return picdisp; } public void onSmileButton2Clicked(IRibbonControl control) { Dialog1 dialog = new Dialog1(); _Explorer owner = Globals.getThisAddin().getApplication().ActiveExplorer(); dialog.showAsync(owner, (result, ex) -> { if (result != null && result.length() != 0) { System.out.println("Dialog result=" + result); } }); } public boolean onJoaTaskPaneGetPressed(IRibbonControl control) { boolean ret = taskPane.isVisible(); return ret; } public void onJoaTaskPaneClicked(Dispatch control, Boolean pressed) { BackgTask.run(() -> { if (taskPane.hasWindow()) { taskPane.setVisible(pressed); } else { Object parentWindow = getApplication().ActiveExplorer(); createTaskPaneWindowAsync(taskPane, "JOA TaskPane", parentWindow, (succ, ex) -> { if (ex == null) { taskPane.setVisible(true); } if (ex != null) { ex.printStackTrace(); } }); } }); } }