Kopyalama yapıştırma sistemi üç şeyden oluşur: ICopyable
nesneler, kopyalanan nesneleri temsil eden ICopyData
ve kopyalanan verileri tekrar kopyalanabilir nesnelere dönüştürebilen IPaster
nesneleri. Her ICopyable
türünün, bu verileri yapıştırabilecek ilişkili bir IPaster
öğesine ihtiyacı vardır.
Bu sistemler, bağlam menüsü seçenekleri ve klavye kısayolları aracılığıyla kullanıcıya sunulur.
Genellikle kopyalanabilir nesneler oluşturulduğundan ve Blockly'ye yeni oluşturulan nesneler ekleyemeyeceğinizden, özel kopyalanabilir veya özel yapıştırıcı (ör. multiselect eklentisi veya sekmeler arası kopyalama yapıştırma eklentisi) uygulamak isteyebileceğiniz çok az durum vardır. Bir çalışma alanı içinde oluşturulmuş nesneler yalnızca bloklar, balonlar ve çalışma alanı yorumlarıdır.
Kopyalanabilir bir kampanya oluşturun
Kopyalanabilir bir nesne oluşturmak için ICopyable
arayüzünü uygulamanız gerekir.
Seçilebilir
ICopyable
arayüzü ISelectable
arayüzünü genişlettiği için bu yöntemleri ve özellikleri de uygulamanız gerekir.
Klavye kısayolları neyin kopyalanacağını belirlemek için seçilen nesneye baktığından seçilebilir özellik gereklidir.
class MyCopyable implements ISelectable {
constructor(workspace) {
this.id = Blockly.utils.idGenerator.genUid();
this.workspace = workspace;
}
select() {
// Visually indicate this draggable is selected.
}
unselect() {
// Visually indicate this draggable is not selected.
}
}
Kopyalanabilir
ICopyable
arayüzünün kendisinde yalnızca bir yöntem vardır: toCopyData
bu yöntem, kopyalanabilir nesnenin durumunun JSON ile serileştirilebilir bir gösterimini döndürür ve kopyalanabilir nesneyi yeniden oluşturmak için kullanılabilir.
Kopyalama verileri, bu kopyalama verilerini yapıştırması gereken yapıştırıcıyla ilişkili kayıtlı dize adını barındıran bir paster
özelliği de içermelidir. Yapıştırıcılar hakkında daha fazla bilgi için Yapıştırıcı uygulama bölümüne bakın.
class MyCopyable implements ICopyable {
constructor(workspace, state) {
this.workspace = workspace;
this.myState = state;
}
toCopyData() {
return {
// This string matches the string used to register the paster.
paster: 'MY_PASTER',
state: this.myState,
};
}
}
Yapıştırıcı uygulama
Yapıştırıcı oluşturmak için IPaster
arayüzünü uygulamanız gerekir. Yapıştırdığı öğenin kopya verilerini, öğenin yapıştırılacağı çalışma alanını ve öğenin yapıştırılacağı konum olan isteğe bağlı bir koordinatı alan tek bir paste
yöntemi vardır.
class MyPaster implements IPaster {
paste(copyData, workspace, coordinate) {
return new MyCopyable(workspace, copyData.state);
// Optionally position the copyable at the passed coordinate.
// Optionally select the copyable after it is pasted.
}
}
Kayıt
Bir yapıştırıcıyı uyguladıktan sonra, paster
özelliğindeki belirli bir kopya verisiyle ilişkili yapıştırıcıyı bulabilmek için bunu kaydetmeniz gerekir.
// This string matches the string assigned to the 'paster' property.
Blockly.clipboard.registry.register('MY_PASTER', new MyPaster());