Group:  Microsoft Outlook ยป microsoft.public.outlook.program_addins
Thread: place button on ribbon for compose & read message

Geek News

place button on ribbon for compose & read message
sd <dshubhangi[ at ]gmail.com> 11/19/2008 1:34:07 PM
hello

I've Outlook addin for office 2007 using VSTO SE.I need to add custom
buton on ribbon for existing mesage as well as for new message.
Currently I'm using below xml file

<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui"
onLoad="OnLoad">
<ribbon>
<tabs>
<tab idMso="TabNewMailMessage">
<group id="ClearV"
label="ClearV"
>
<button id="Button1"
size="large"
label="Save And Send"
screentip="ClearV Save And Send"
onAction="OnButton1"
getEnabled="CallBackIsEnable"
imageMso="HappyFace"/>
</group>
</tab>
</tabs>
</ribbon>
</customUI>

rbnComposeMail.vb -
Public Function GetCustomUI(ByVal ribbonID As String) As String
Implements Office.IRibbonExtensibility.GetCustomUI
If ribbonID = "Microsoft.Outlook.Mail.Compose" Then
Return GetResourceText
("Outlook_Add_In.rbnComposeMail.xml")
'ElseIf ribbonID = "Microsoft.Outlook.Mail.Read" Then
' Return GetResourceText("Outlook_Add_In.rbnReadMail.xml")
End If

End Function

What extra I need to add to have my custom button on ribbon for both
new message & existing message?

I also want to disable/Enable this button when opening message
depending on some condition.I tried with Callback function but this
button gets enabled/disabled only for the first time thereafter it
remains as it is i.e. not enables/disables dynamically.

thanks
Re: place button on ribbon for compose & read message
"Ken Slovak - [MVP - Outlook]" <kenslovak[ at ]mvps.org> 11/19/2008 2:20:53 PM
You'll need to supply slightly different XML for a
"Microsoft.Outlook.Mail.Read" item, the tab is called "TabReadMessage" when
reading items.

To get your callbacks called again you need to call either the
InvalidateControl(controlID) method of the ribbon or the Invalidate()
method. Those can be called in the Inspector.Activate() event handler
depending on condition evaluation. InvalidateControl() fires the callbacks
for only that control, Invalidate() fires the callbacks for all of your
ribbon UI.

--
Ken Slovak
[MVP - Outlook]
http://www.slovaktech.com
Author: Professional Programming Outlook 2007.
Reminder Manager, Extended Reminders, Attachment Options.
http://www.slovaktech.com/products.htm


"sd" <dshubhangi[ at ]gmail.com> wrote in message
news:721ae92a-1fb0-4239-b7d1-69afec120a73[ at ]w1g2000prk.googlegroups.com...
[Quoted Text]
> hello
>
> I've Outlook addin for office 2007 using VSTO SE.I need to add custom
> buton on ribbon for existing mesage as well as for new message.
> Currently I'm using below xml file
>
> <customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui"
> onLoad="OnLoad">
> <ribbon>
> <tabs>
> <tab idMso="TabNewMailMessage">
> <group id="ClearV"
> label="ClearV"
> >
> <button id="Button1"
> size="large"
> label="Save And Send"
> screentip="ClearV Save And Send"
> onAction="OnButton1"
> getEnabled="CallBackIsEnable"
> imageMso="HappyFace"/>
> </group>
> </tab>
> </tabs>
> </ribbon>
> </customUI>
>
> rbnComposeMail.vb -
> Public Function GetCustomUI(ByVal ribbonID As String) As String
> Implements Office.IRibbonExtensibility.GetCustomUI
> If ribbonID = "Microsoft.Outlook.Mail.Compose" Then
> Return GetResourceText
> ("Outlook_Add_In.rbnComposeMail.xml")
> 'ElseIf ribbonID = "Microsoft.Outlook.Mail.Read" Then
> ' Return GetResourceText("Outlook_Add_In.rbnReadMail.xml")
> End If
>
> End Function
>
> What extra I need to add to have my custom button on ribbon for both
> new message & existing message?
>
> I also want to disable/Enable this button when opening message
> depending on some condition.I tried with Callback function but this
> button gets enabled/disabled only for the first time thereafter it
> remains as it is i.e. not enables/disables dynamically.
>
> thanks

Re: place button on ribbon for compose & read message
sd <dshubhangi[ at ]gmail.com> 11/20/2008 1:57:33 PM
Thanks Ken
I tried below xml
<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui"
onLoad="OnLoad">
<ribbon>
<tabs>
<tab idMso="TabReadMessage">
<group id="ClearV2"
label="ClearV2"
>
<button id="Button2"
size="large"
label="ClearV2"
screentip="ClearV2 tip"
onAction="OnButton2"
getEnabled="CallBackIsEnable"
imageMso="HappyFace"/>
</group>
</tab>
</tabs>
</ribbon>
</customUI>

I didn't get any error ,but my button was not displayed on Ribbon for
existing mail.What went wrong?
I'm using single vb file & 2 xml files -one for compose & other for
read.The vb file has below 2 functions
Public Function GetCustomUI(ByVal ribbonID As String) As String
Implements Office.IRibbonExtensibility.GetCustomUI
If ribbonID = "Microsoft.Outlook.Mail.Compose" Then
If gblnLicense = False Then Return Nothing
Return GetResourceText
("Clearv_Outlook_Add_In.rbnComposeMail.xml")
ElseIf ribbonID = "Microsoft.Outlook.Mail.Read" Then
Return GetResourceText
("Clearv_Outlook_Add_In.rbnReadMail.xml")
End If

End Function

Protected Overrides Function RequestService(ByVal serviceGuid As Guid)
As Object
If serviceGuid = GetType(Office.IRibbonExtensibility).GUID
Then
If ribbon Is Nothing Then
ribbon = New rbnComposeMail()
End If
Return ribbon
End If

Return MyBase.RequestService(serviceGuid)
End Function

Thanks again
Re: place button on ribbon for compose & read message
"Ken Slovak - [MVP - Outlook]" <kenslovak[ at ]mvps.org> 11/20/2008 2:52:49 PM
No idea offhand. The XML looks valid for read emails and uses correct
syntax.

Do you have the UI setting made to show any errors in your ribbon? Check
Tools, Options, Other tab, Advanced Options button, check the "Show add-in
user interface errors".

Also make sure you are getting the callback for that ribbon XML when you
initially open a mail item for reading.

--
Ken Slovak
[MVP - Outlook]
http://www.slovaktech.com
Author: Professional Programming Outlook 2007.
Reminder Manager, Extended Reminders, Attachment Options.
http://www.slovaktech.com/products.htm


"sd" <dshubhangi[ at ]gmail.com> wrote in message
news:20847ce6-ab90-49e9-809c-b4ba28caeec1[ at ]v39g2000pro.googlegroups.com...
[Quoted Text]
> Thanks Ken
> I tried below xml
> <customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui"
> onLoad="OnLoad">
> <ribbon>
> <tabs>
> <tab idMso="TabReadMessage">
> <group id="ClearV2"
> label="ClearV2"
> >
> <button id="Button2"
> size="large"
> label="ClearV2"
> screentip="ClearV2 tip"
> onAction="OnButton2"
> getEnabled="CallBackIsEnable"
> imageMso="HappyFace"/>
> </group>
> </tab>
> </tabs>
> </ribbon>
> </customUI>
>
> I didn't get any error ,but my button was not displayed on Ribbon for
> existing mail.What went wrong?
> I'm using single vb file & 2 xml files -one for compose & other for
> read.The vb file has below 2 functions
> Public Function GetCustomUI(ByVal ribbonID As String) As String
> Implements Office.IRibbonExtensibility.GetCustomUI
> If ribbonID = "Microsoft.Outlook.Mail.Compose" Then
> If gblnLicense = False Then Return Nothing
> Return GetResourceText
> ("Clearv_Outlook_Add_In.rbnComposeMail.xml")
> ElseIf ribbonID = "Microsoft.Outlook.Mail.Read" Then
> Return GetResourceText
> ("Clearv_Outlook_Add_In.rbnReadMail.xml")
> End If
>
> End Function
>
> Protected Overrides Function RequestService(ByVal serviceGuid As Guid)
> As Object
> If serviceGuid = GetType(Office.IRibbonExtensibility).GUID
> Then
> If ribbon Is Nothing Then
> ribbon = New rbnComposeMail()
> End If
> Return ribbon
> End If
>
> Return MyBase.RequestService(serviceGuid)
> End Function
>
> Thanks again

Home | Search | Terms | Imprint Contact
Newsgroups Reader - provided by WiredBox.Net