package com.wilutions.joa.example.folderhp;
import java.io.IOException;
import com.wilutions.com.BackgTask;
import com.wilutions.com.CoClass;
import com.wilutions.com.ComException;
import com.wilutions.com.Dispatch;
import com.wilutions.joa.DeclAddin;
import com.wilutions.joa.LoadBehavior;
import com.wilutions.joa.OfficeApplication;
import com.wilutions.joa.outlook.OutlookAddin;
import com.wilutions.mslib.office.IRibbonControl;
import com.wilutions.mslib.office.IRibbonUI;
import com.wilutions.mslib.outlook.MAPIFolder;
import com.wilutions.mslib.outlook._NameSpace;
@CoClass(progId = "FolderHomePageAddin.Class", guid = "{eb7a37de-e328-46b7-bfe6-3e09b95402c7}")
@DeclAddin(application = OfficeApplication.Outlook, loadBehavior = LoadBehavior.LoadOnStart, friendlyName = "JOA Folder Home Page", description = "Displays JavaFX scene on a folder's home page")
public class FolderHomePageAddin extends OutlookAddin {
private boolean fvButtonPressed;
private IRibbonUI ribbon;
private MyFolderView folderView;
public FolderHomePageAddin() {
Globals.setThisAddin(this);
}
@Override
public void onStartup() throws ComException {
super.onStartup();
// Create Folder with home page, if it does not exist.
BackgTask.run(() -> {
try {
createHomePageFolder();
} catch (Exception e) {
e.printStackTrace();
}
});
}
public void createHomePageFolder() throws IOException {
_NameSpace session = getApplication().getSession();
MAPIFolder root = Utility.Folder.GetRootFolder(session);
MAPIFolder crmFolder = Utility.Folder.CreateFolder(root, "JOA Folder");
super.assignFolderView(crmFolder, MyFolderView.class, "My Folder View", "ID*1:2/3");
}
public void onLoadRibbon(IRibbonUI ribbon) throws ComException {
this.ribbon = ribbon;
}
public void FVButton_onAction(Dispatch control, Boolean pressed) throws ComException {
setFvButtonPressed(pressed);
}
public boolean FVButton_getPressed(IRibbonControl control) throws ComException {
return isFvButtonPressed();
}
public IRibbonUI getRibbon() {
return ribbon;
}
public boolean isFvButtonPressed() {
return fvButtonPressed;
}
public void setFvButtonPressed(boolean fvButtonPressed) {
this.fvButtonPressed = fvButtonPressed;
ribbon.InvalidateControl("FVButton");
if (folderView != null) {
folderView.setFvButtonPressed(fvButtonPressed);
}
}
public MyFolderView getFolderView() {
return folderView;
}
public void setFolderView(MyFolderView folderView) {
this.folderView = folderView;
}
}