package custapp;
import com.wilutions.com.BackgTask;
import com.wilutions.com.CoClass;
import com.wilutions.com.ComException;
import com.wilutions.com.Dispatch;
import com.wilutions.com.IDispatch;
import com.wilutions.com.JoaDll;
import com.wilutions.joa.DeclAddin;
import com.wilutions.joa.LoadBehavior;
import com.wilutions.joa.OfficeApplication;
import com.wilutions.joa.outlook.FormPage;
import com.wilutions.joa.outlook.OutlookAddin;
import com.wilutions.mslib.outlook.Application;
import com.wilutions.mslib.outlook.AppointmentItem;
import com.wilutions.mslib.outlook.Inspector;
import com.wilutions.mslib.outlook.InspectorsEvents;
import com.wilutions.mslib.outlook._Inspector;
import com.wilutions.mslib.outlook._Inspectors;
// Erste Formularseite des Terminformulars kann nicht ge�ndert werden:
// http://www.slipstick.com/developer/tips-customizing-outlook-appointment-forms/
// http://msdn.microsoft.com/en-us/library/office/ff863941%28v=office.15%29.aspx
/**
* This addin example uses form pages.
*
* Form pages are similar to form regions of type "separate".
* When adding a new form page to the inspector window, the item gets modified.
* This is a disadvantage compared to form regions and that is why form regions
* should be prefered.
*/
@CoClass(progId = "AppointmentAddin.Class", guid = "{8b4681a9-cdee-4ad8-9114-035ec2c6b49c}")
@DeclAddin(friendlyName = "Appointment Addin", description = "Addin with extended appointment information", application = OfficeApplication.Outlook, loadBehavior = LoadBehavior.LoadOnStart)
public class AppointmentAddin extends OutlookAddin implements InspectorsEvents {
private volatile _Inspectors inspectors;
public AppointmentAddin() {
}
@Override
public void onStartup() throws ComException {
System.out.println("AppointmentAddin.onStartup");
Application app = getApplication();
inspectors = app.getInspectors();
Dispatch.withEvents(inspectors, this);
int n = inspectors.getCount();
for (int i = 0; i < n; i++) {
Inspector inspector = inspectors.Item(i);
onNewInspector(inspector);
}
}
@Override
public void onQuit() throws ComException {
System.out.println("AppointmentAddin.onQuit");
Dispatch.releaseEvents(inspectors, this);
JoaDll.dumpComReferenceMap("before exit");
super.onQuit();
}
@Override
public void onNewInspector(final _Inspector insp) throws ComException {
Inspector inspector = Dispatch.as(insp, Inspector.class);
System.out.println("AppointmentAddin.onNewInspector " + inspector);
IDispatch dispItem = inspector.getCurrentItem();
if (dispItem.is(AppointmentItem.class)) {
// Add form pages in background task.
// Otherwise their icons might not be visible in the ribbon bar.
BackgTask.run(() -> {
FormPage fp = new MyFormPageFX();
fp.setTitle("FX Page");
fp.showAsync(inspector, null);
FormPage fp2 = new MyFormPageSwing();
fp2.setTitle("Swing Page");
fp2.showAsync(inspector, null);
// inspector.SetCurrentFormPage("FX Page");
// inspector.HideFormPage("Termin");
});
}
}
}