Subscribe RSS Join our Facebook Group Follow us on Twitter!
in Search

Alexander Rahardjo's Blog

March 2011 - Posts

  • Membuat Aplikasi Translator pada Microsoft Word 2010 menggunakan VSTO 4.0

    Setelah membaca dan mencoba tutorial saya yang sebelumnya mengenai VSTO, sekarang saatnya kita mencoba sesuatu dengan VSTO ini ke tingkat yang lebih tinggi Smile. Pada tutorial kali ini kita akan mencoba bersama membuat sebuah kakas penerjemah atau add-ins untuk Microsoft Word 2010 dengan menggunakan VSTO dan nama aplikasi kali ini saya namakan WordTranslator dimana aplikasi ini digunakan untuk melakukan translasi dalam Microsoft Word 2010 dan aplikasi ini menggunakan layanan yang berasal dari Google dan Bing sebagai translator.

    Sebelum melakukan pembuatan aplikasi ini berikut adalah kakas dan library yang anda butuhkan dalam pengembangan aplikasi ini harus telah tersedia dalam komputer anda:

    1. Microsoft Visual Studio 2010
    2. Microsoft Office 2010
    3. Google Translate API (versi yang saya gunakan pada tutorial ini adalah 3.0)
    4. Mendaftarkan diri di http://www.bing.com/developers/appids.aspx untuk mendapatkan appID

    Setelah itu, berikut adalah langkah-langkah pembuatan aplikasi:

    1. Buka Visual Studio 2010 anda.

    2. Buat sebuah project baru, pilih office, kemudian pilih Word 2010 Add-in, lalu tuliskan nama project yang anda kehendaki, di sini saya   menuliskan “WordTranslator2010”, lalu tekan tombol “OK”.

    3. Kemudian tambahkan User Control pada project anda dengan cara klik kanan pada project anda lalu pilih Add User Control, maka akan tampil jendela berikut. Isi nama User Control kemudian tekan tombol “OK”.

    image_thumb1_thumb

    4. Kemudian tambahkan Ribbon pada project anda dengan cara klik kanan pada project anda lalu pilih Add New Item, maka akan tampil jendela berikut. Isi nama Ribbon kemudian tekan tombol “OK”.

    image_thumb4_thumb

    5. Kemudian pastikan bahwa 2 item tadi telah berada dalam project anda.

    6. Tambahkan kontrol ToggleButton ke Ribbon anda melalui toolbox bagian Office Ribbon Controls. Anda dapat mengganti nama dari Ribbon anda yang semula group1, saya mengubahnya menjadi “WordTranslator”.

    7. Ubah label ToggleButton tadi melalui jendela properties, pada project saya, saya mengubahnya menjadi “WordTranslator 2010”.

    8. Lalu Ribbon anda akan tampak seperti gambar berikut.

    image

    9. Kemudian masukkan beberapa kontrol pada User Control dan ubah propertiesnya sesuai kebutuhan anda.

    10. Berikut adalah tampilan User Control buatan saya.

    image

    11. Setelah itu lakukan add reference kemudian pilih library GoogleTranslate yang telah anda unduh tadi, dll yang digunakan adalah: GoogleTranslateAPI.dll.

    12. Kemudian lakukan add service renference dengan mengisikan web service berikut http://api.microsofttranslator.com/V2/Soap.svc.

    13. Buat sebuah App.config dengan cara Add New Item lalu isikan dengan konfigurasi sebagai berikut:

    image

    14. Setelah itu masukkan kode berikut pada User Control, dengan melakukan klik 2x setiap kontrol.

      1:     public partial class WTUserControl : UserControl
    
      2:     {
    
      3:         List<string> _srcGoogle;
    
      4:         List<string> _destGoogle;
    
      5:         List<string> _srcBing;
    
      6:         List<string> _destBing;
    
      7:         List<string> _srcBingName;
    
      8:         List<string> _destBingName;
    
      9:         BingTranslatorService.LanguageServiceClient _proxy;
    
     10:         TranslateClient _client;
    
     11:         
    
     12: 
    
     13:         public WTUserControl()
    
     14:         {
    
     15:             InitializeComponent();
    
     16:             InitGoogleTranslate();
    
     17:             InitBingTranslate();
    
     18:         }
    
     19: 
    
     20:         private void InitGoogleTranslate()
    
     21:         {
    
     22:             _srcGoogle = Google.API.Translate.Language.TranslatableCollection.Select(a => a.ToString()).ToList();
    
     23:             _destGoogle = Google.API.Translate.Language.TranslatableCollection.Select(a => a.ToString()).ToList();
    
     24:         }
    
     25: 
    
     26:         private void InitBingTranslate()
    
     27:         {
    
     28:             _proxy = new BingTranslatorService.LanguageServiceClient();
    
     29:             string[] languageCodes = _proxy.GetLanguagesForTranslate(AppId);
    
     30:             _srcBing = languageCodes.ToList();
    
     31:             _destBing = languageCodes.ToList();
    
     32:             _srcBingName = _proxy.GetLanguageNames(AppId, "en", languageCodes).ToList();
    
     33:             _destBingName = _proxy.GetLanguageNames(AppId, "en", languageCodes).ToList();
    
     34:             
    
     35:         }
    
     36: 
    
     37:         private void btnTranslate_Click(object sender, EventArgs e)
    
     38:         {
    
     39:             string text;
    
     40:             string src;
    
     41:             string dest;
    
     42:             string srcName;
    
     43:             string destName;
    
     44:             string translated;
    
     45: 
    
     46:             //get text from active document
    
     47:             text = Globals.ThisAddIn.Application.ActiveDocument.Content.Text;
    
     48: 
    
     49:             try
    
     50:             {   
    
     51:                 if (rbGoogle.Checked)  //user checked Google
    
     52:                 {   
    
     53:                     src = _srcGoogle[cmbSrcLang.SelectedIndex];
    
     54:                     dest = _destGoogle[cmbDestLang.SelectedIndex];
    
     55:                     label3.Visible = true;
    
     56:                     label3.Text = src + " to " + dest;
    
     57:                     _client = new TranslateClient("");
    
     58:                     translated = _client.Translate(text, GetLang(src),GetLang(dest));
    
     59:                     txtResult.Text = translated;
    
     60:                 }
    
     61:                 else if (rbBing.Checked)  //user checked Bing
    
     62:                 {
    
     63:                     src = _srcBing[cmbSrcLang.SelectedIndex];
    
     64:                     dest = _destBing[cmbDestLang.SelectedIndex];
    
     65:                     srcName = _srcBingName[cmbSrcLang.SelectedIndex];
    
     66:                     destName = _destBingName[cmbDestLang.SelectedIndex];
    
     67:                     label3.Visible = true;
    
     68:                     label3.Text = srcName + " to " + destName;
    
     69:                     translated = _proxy.Translate(AppId, text, src, dest,"","");
    
     70:                     txtResult.Text = translated;
    
     71:                 }
    
     72:             }
    
     73:             catch (Exception ex)
    
     74:             {
    
     75:                 MessageBox.Show("Error, " + ex.Message);
    
     76:             }
    
     77:         }
    
     78: 
    
     79:         private void FillLanguageGoogle()
    
     80:         {
    
     81:             cmbSrcLang.Items.Clear();
    
     82:             cmbSrcLang.Items.AddRange(_srcGoogle.ToArray());
    
     83:             cmbSrcLang.SelectedIndex = 0;
    
     84: 
    
     85:             cmbDestLang.Items.Clear();
    
     86:             cmbDestLang.Items.AddRange(_destGoogle.ToArray());
    
     87:             cmbDestLang.SelectedIndex = 0;
    
     88: 
    
     89:         }
    
     90: 
    
     91:         private void FillLanguageBing()
    
     92:         {
    
     93:             cmbSrcLang.Items.Clear();
    
     94:             cmbSrcLang.Items.AddRange(_srcBingName.ToArray());
    
     95:             cmbSrcLang.SelectedIndex = 0;
    
     96: 
    
     97:             cmbDestLang.Items.Clear();
    
     98:             cmbDestLang.Items.AddRange(_destBingName.ToArray());
    
     99:             cmbDestLang.SelectedIndex = 0;
    
    100:         }
    
    101: 
    
    102:         private void rbGoogle_CheckedChanged(object sender, EventArgs e)
    
    103:         {
    
    104:             FillLanguageGoogle();
    
    105:         }
    
    106: 
    
    107:         private void rbBing_CheckedChanged(object sender, EventArgs e)
    
    108:         {
    
    109:             FillLanguageBing();
    
    110:         }
    
    111: 
    
    112:         public Language GetLang(string lang)
    
    113:         {
    
    114:             foreach (Language language in Google.API.Translate.Language.TranslatableCollection)
    
    115:             {
    
    116:                 if (language.ToString().Equals(lang))
    
    117:                 {
    
    118:                     return language;
    
    119:                 }
    
    120:             }
    
    121:             return Language.English;
    
    122:         }
    
    123: 
    
    124:         private static string AppId
    
    125:         {
    
    126:             get { return ConfigurationManager.AppSettings["appID"]; }
    
    127:         }
    
    128: 
    
    129:         private void btnDetect_Click(object sender, EventArgs e)
    
    130:         {
    
    131:             string text = Globals.ThisAddIn.Application.ActiveDocument.Content.Text;
    
    132:             if (rbGoogle.Checked)
    
    133:             {
    
    134:                 bool reliable;
    
    135:                 double confidence;
    
    136:                 _client = new TranslateClient("");
    
    137:                 MessageBox.Show("Your current language is "+_client.Detect(text, out reliable, out confidence));
    
    138:             }
    
    139:             else if (rbBing.Checked)
    
    140:             {
    
    141:                 MessageBox.Show(_proxy.Detect(AppId,text));
    
    142:             }
    
    143:         }        
    
    144:     }

    15. Tambahkan kode berikut pada ThisAddIn.cs.

      1:     public partial class ThisAddIn
    
      2:     {
    
      3:         Microsoft.Office.Tools.CustomTaskPane _ctp;
    
      4:         private void ThisAddIn_Startup(object sender, System.EventArgs e)
    
      5:         {
    
      6:             _ctp = Globals.ThisAddIn.CustomTaskPanes.Add(new WTUserControl(), "WordTranslator");
    
      7:         }
    
      8: 
    
      9:         public void ShowWordTranslator()
    
     10:         {
    
     11:             _ctp.Visible = true;
    
     12:         }
    
     13: 
    
     14:         public void HideWordTranslator()
    
     15:         {
    
     16:             _ctp.Visible = false;
    
     17:         }
    
     18: 
    
     19:         private void ThisAddIn_Shutdown(object sender, System.EventArgs e)
    
     20:         {
    
     21:         }
    
     22: 
    
     23:         #region VSTO generated code
    
     24: 
    
     25:         /// <summary>
    
     26:         /// Required method for Designer support - do not modify
    
     27:         /// the contents of this method with the code editor.
    
     28:         /// </summary>
    
     29:         private void InternalStartup()
    
     30:         {
    
     31:             this.Startup += new System.EventHandler(ThisAddIn_Startup);
    
     32:             this.Shutdown += new System.EventHandler(ThisAddIn_Shutdown);
    
     33:         }
    
     34:         
    
     35:         #endregion
    
     36:     }

    16. Kemudian tambahkan kode berikut pada Ribbon dengan melakukan klik 2x pada ToggleButton.

      1:         private void toggleButton1_Click(object sender, RibbonControlEventArgs e)
    
      2:         {
    
      3:             if (toggleButton1.Checked)
    
      4:             {
    
      5:                 Globals.ThisAddIn.ShowWordTranslator();
    
      6:             }
    
      7:             else
    
      8:             {
    
      9:                 Globals.ThisAddIn.HideWordTranslator();
    
     10:             }
    
     11:         }

    17. Kemudian jalankan program anda dengan menekan tombol F5. Berikut adalah tampilan aplikasi:

    image

    Demikian tutorial dari saya kali ini yang mengaplikasikan 2 buah API yang salah satunya berupa web service. Semoga bermanfaat Smile.

    661 Views, 0 Comment(s), Published on: 03-18-2011 0:57 by alexrhd to Alexander Rahardjo's Blog
    | More
    Filed under: ,
  • Microsoft Technology Update Road Trip 2011 @Ma Chung, Malang

    Pendahuluan

    Pada hari Jumat tanggal 4 Maret 2011, MSP Regional Jawa Timur bekerja sama dengan MUGI Ma Chung mengadakan acara Microsoft Technology Update Road Trip 2011 di Universitas Ma Chung, Malang. Tujuan utama dari acara ini adalah memberikan update mengenai teknologi terbaru dan pengenalan program-program akademik dari Microsoft. Pembicara dalam kegiatan ini, yaitu: Julius Fenata (Academic Developer Advisor Microsoft Indonesia), Jeffrey Hermanto Halimsetiawan (MSP ITS), Alexander Rahardjo (MSP ITS),  dan Izzuddin Gumilar (MSP ITS).

    Pelaksanaan

    • Hari / Tanggal : Jumat, 4 Maret 2011
    • Waktu : 15.00 - 18.00 WIB
    • Tempat : Balai Pertiwi, Univ Ma Chung

    Agenda

    Acara ini dibuka dengan sesi pertama oleh Julius Fenata yang memberikan penjelasan mulai dari MSDN AA, Did You Know?, showcase aplikasi WPF, Silverlight, XNA dan Microsoft Surface dalam bentuk video serta Imagine Cup sebagai kompetisi IT terbesar di dunia.

    185631_1814351965903_1453171189_1953763_7209951_n

    Acara dilanjutkan dengan sesi kedua yang diisi oleh Jeffrey Hermanto Halimsetiawan(MSP ITS) mengenai Windows Phone 7 yang merupakan Smartphone OS terbaru yang dikeluarkan oleh Microsoft. Penjelasan ini dimulai dari hardware dari Windows Phone 7 lalu Windows Phone 7 dari sisi consumer dan developer. Di dalam sesi ini dijelaskan mengenai pembangunan aplikasi mobile pada Windows Phone 7 OS dan dilengkapi dengan demo aplikasi Windows Phone 7 yang dikembangkan bernama Petualangan Aksara di Tanah Jawa for WP7. Dalam sesi ini peserta cukup antusias dalam mencoba aplikasi yang didemokan ini.

    183048_1814352125907_1453171189_1953764_5242708_n

    Berikut adalah materi presentasi Windows Phone 7:

    Kemudian dilanjutkan dengan sesi ketiga yang diisi oleh Alexander Rahardjo(MSP ITS). Pada sesi ini dijelaskan mengenai asal mula teknologi MultiPoint, penerapan aplikasi MultiPoint melalui sebuah video, sekilas mengenai Windows MultiPoint Mouse SDK 1.5.1, membangun aplikasi Flash dengan memanfaatkan Microsoft MultiPoint SDK 1.1 dan diakhiri demo aplikasi Flash MultiPoint bernama Petualangan Aksara di Tanah Jawa.

    189132_1814352245910_1453171189_1953765_6370915_n

    Berikut adalah materi presentasi MultiPoint:

    Selanjutnya sesi keempat diisi oleh Izzuddin Gumilar (MSP ITS) mengenai Microsoft Webmatrix dan Razor View Engine. Di dalam sesi ini, dijelaskan mudahnya membangun sebuah aplikasi web yang bresifat pre-build application dengan menggunakan Microsoft webmatrix yang disertai dengan demo dengan menggunakan web template and gallery yang telah disediakan oleh webmatrix. Selain itu sesi ini dilengkapi dengan penjelasan mengenai Razor View Engine yang merupakan salah satu option view engine yang dimiliki oleh asp.net framework yang juga merupakan komponen yang dibundle di dalam Microsoft Webmatrix.

    190125_1814352365913_1453171189_1953766_583331_n

    Berikut adalah materi presentasi Microsoft Webmatrix:

    Acara terakhir dimeriahkan dengan demo langsung game Kinect Adventures dengan Microsoft Kinect oleh para MSP yang kemudian dicoba secara langsung oleh beberapa peserta. Demo Kinect ini memperoleh antusias yang sangat besar dari penonton.

    IMG_4704IMG_4708

    Acara ditutup dengan penyerahan penghargaan bagi para pembicara oleh panitia acara dari Universitas Ma Chung, kemudian dilanjutkan dengan foto bersama.

    IMG_4711IMG_4712IMG_4715

    IMG_4720

    Berikut adalah beberapa foto yang menunjukkan antusiasme peserta acara ini.

    IMG_4661IMG_4677

    Puji syukur acara Microsoft Technology Update Road Trip 2011di Universitas Ma Chung ini dapat berjalan sukses dan lancar, tidak lupa kami sampaikan terima kasih kepada MUGI Universitas Ma Chung yang telah bekerja sama dalam menyelenggarakan acara ini. Semoga dengan adanya acara ini dapat menumbuhkan motivasi mahasiswa Ma Chung untuk berkarya dengan menggunakan teknologi-teknologi terbaru Microsoft untuk berkompetisi dalam Imagine Cup 2012 tahun depan. Smile

    356 Views, 0 Comment(s), Published on: 03-05-2011 23:20 by alexrhd to Alexander Rahardjo's Blog
    | More