Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Anda dapat mengubah perilaku beberapa perintah standar yang ditentukan secara otomatis di DSL Anda. Misalnya, Anda dapat mengubah Potong sehingga mengecualikan informasi sensitif. Untuk melakukan ini, Anda mengambil alih metode di kelas set perintah. Kelas-kelas ini ditentukan dalam file CommandSet.cs, dalam proyek DslPackage, dan yang berasal dari CommandSet.
Catatan
Jika Anda ingin membuat perintah menu sendiri, lihat Cara: Menambahkan Perintah ke Menu Pintasan.
Perintah apa yang dapat Anda ubah?
Untuk menemukan perintah apa yang dapat Anda ubah
Dalam proyek
DslPackage, bukaGeneratedCode\CommandSet.cs. File C# ini dapat ditemukan di Penjelajah Solusi sebagai anak perusahaan dariCommandSet.tt.Temukan kelas dalam file ini yang namanya diakhiri dengan "
CommandSet", misalnyaLanguage1CommandSetdanLanguage1ClipboardCommandSet.Di setiap kelas set perintah, ketik "
override" diikuti dengan spasi. IntelliSense akan menampilkan daftar metode yang dapat Anda ambil alih. Setiap perintah memiliki sepasang metode yang namanya dimulai "ProcessOnStatus" dan "ProcessOnMenu".Perhatikan kelas set perintah mana yang berisi perintah yang ingin Anda ubah.
Tutup file tanpa menyimpan pengeditan Anda.
Catatan
Biasanya, Anda tidak boleh mengedit file yang telah dibuat. Pengeditan apa pun akan hilang saat berikutnya file dibuat.
Memperluas kelas set perintah yang sesuai
Buat file baru yang berisi deklarasi parsial dari kelas set perintah.
Untuk memperluas kelas Set Perintah
Di Penjelajah Solusi, dalam proyek DslPackage, buka folder GeneratedCode lalu lihat di bawah CommandSet.tt dan buka file CommandSet.cs yang dihasilkan. Perhatikan namespace layanan dan nama kelas pertama yang ditentukan di sana. Misalnya, Anda mungkin melihat:
namespace Company.Language1{ ... internal partial class Language1CommandSet : ...Di DslPackage, buat folder bernama Kode Kustom. Di folder ini, buat file kelas baru bernama
CommandSet.cs.Di file baru, tulis deklarasi parsial yang memiliki namespace layanan dan nama yang sama dengan kelas parsial yang dihasilkan. Contoh:
using System; using System.Collections.Generic; using System.ComponentModel.Design; namespace Company.Language1 /* Make sure this is correct */ { internal partial class Language1CommandSet { ...Catatan
Jika Anda menggunakan templat file kelas untuk membuat file baru, Anda harus memperbaiki namespace layanan dan nama kelas.
Mengambil alih metode perintah
Sebagian besar perintah memiliki dua metode terkait: Metode dengan nama seperti ProcessOnStatus... menentukan apakah perintah harus terlihat dan diaktifkan. Itu dipanggil setiap kali pengguna mengeklik kanan diagram, dan harus dijalankan dengan cepat dan tidak membuat perubahan. ProcessOnMenu... dipanggil saat pengguna mengeklik perintah, dan harus menjalankan fungsi perintah tersebut. Anda mungkin ingin mengambil alih salah satu atau kedua metode ini.
Untuk mengubah saat perintah muncul pada menu
Mengambil alih metode ProcessOnStatus.... Metode ini harus mengatur properti Terlihat dan Diaktifkan dari parameternya MenuCommand. Biasanya perintah melihat this.CurrentSelection untuk menentukan apakah perintah berlaku untuk elemen yang dipilih, dan mungkin juga melihat propertinya untuk menentukan apakah perintah dapat diterapkan dalam statusnya saat ini.
Sebagai panduan umum, properti Terlihat harus ditentukan oleh elemen apa yang dipilih. Properti Diaktifkan, yang menentukan apakah perintah tampak hitam atau abu-abu pada menu, harus bergantung pada status pilihan saat ini.
Contoh berikut menonaktifkan item menu Hapus saat pengguna telah memilih lebih dari satu bentuk.
Catatan
Metode ini tidak memengaruhi apakah perintah tersedia melalui penekanan tombol. Misalnya, menonaktifkan item menu Hapus tidak mencegah perintah dipanggil melalui kunci Hapus.
/// <summary>
/// Called when user right-clicks on the diagram or clicks the Edit menu.
/// </summary>
/// <param name="command">Set Visible and Enabled properties.</param>
protected override void ProcessOnStatusDeleteCommand (MenuCommand command)
{
// Default settings from the base method.
base.ProcessOnStatusDeleteCommand(command);
if (this.CurrentSelection.Count > 1)
{
// If user has selected more than one item, Delete is greyed out.
command.Enabled = false;
}
}
Sebaiknya Anda memanggil metode dasar terlebih dahulu, untuk menangani semua kasus dan pengaturan yang tidak Anda perhatikan.
Metode ProcessOnStatus tidak boleh membuat, menghapus, atau memperbarui elemen di Store.
Untuk mengubah perilaku perintah
Mengambil alih metode ProcessOnMenu.... Contoh berikut mencegah pengguna menghapus lebih dari satu elemen sekaligus, bahkan dengan menggunakan kunci Hapus.
/// <summary>
/// Called when user presses Delete key
/// or clicks the Delete command on a menu.
/// </summary>
protected override void ProcessOnMenuDeleteCommand()
{
// Allow users to delete only one thing at a time.
if (this.CurrentSelection.Count <= 1)
{
base.ProcessOnMenuDeleteCommand();
}
}
Jika kode Anda membuat perubahan pada Store, seperti membuat, menghapus, atau memperbarui elemen atau link, Anda harus melakukannya di dalam transaksi. Untuk informasi selengkapnya, lihat Cara Membuat dan Memperbarui elemen model.
Menulis kode metode
Fragmen berikut sering berguna dalam metode ini:
this.CurrentSelection. Bentuk yang diklik kanan pengguna selalu disertakan dalam daftar bentuk dan konektor ini. Jika pengguna mengeklik bagian kosong dari diagram, Diagram adalah satu-satunya anggota daftar.this.IsDiagramSelected()-truejika pengguna mengeklik bagian kosong dari diagram.this.IsCurrentDiagramEmpty()this.IsSingleSelection()- pengguna tidak memilih beberapa bentukthis.SingleSelection- bentuk atau diagram yang diklik kanan penggunashape.ModelElement as MyLanguageElement- elemen model yang diwakili oleh bentuk.
Untuk informasi selengkapnya tentang cara menavigasi dari elemen ke elemen dan tentang cara membuat objek dan link, lihat Menavigasi dan Memperbarui Model dalam Kode Program.