2016-04-14 48 views
0

Perspektifleri değiştirmek için kullandığım bir araç çubuğum var. Araç çubuğumdaki her düğme farklı bir bakış açısı açar. O sırada ne açıldığını hisseden kullanıcılara vurgu yapmak istiyorum ve düğmelerimi "DOWN" ve "UP" durumları ile geçiş yapmak istiyorum.Eclipse RCP Araç Çubuğunda özel geçiş yönetimi

public class BaseAction implements IAction { 

@Override 
public int getStyle() { 
    return SWT.TOGGLE; 
} 

İçinde IAction orada bir yöntemdir boolean isChecked ama bunu: düğme davranışı geçiş yapmak için değiştirir

ToolBarManager toolBarManager = new ToolBarManager(); 
coolBar.add(toolBarManager); 
toolBarManager.add(ordersDownload); 

ve benim BaseAction kod parçası: Kod ben araç çubuğuna yeni BaseActions eklemek için kullanın araç çubuğu düğmesine tıkladığımda her zaman olduğu gibi çalışmaz, durumu tersine çevrilir (AŞAĞI -> YUKARI, YUKARI -> AŞAĞI). Durum DOWN ile aynı anda birden fazla Düğmeye (Geçiş) sahip olmak istemiyorum, bu yüzden bir şekilde durumları tüm düğmeler için UP olarak çağırmak ve yalnızca bir durum AŞAĞI ile bırakmak istiyorum.

The picture that shows how it should look like

+0

'getStyle',' IAction.AS_xxxx' değerlerinden birini döndürmelidir - 'SWT.TOGGLE' geçerli değil. "IAction" ın tamamını kendiniz uygulamak yerine "org.eclipse.jface.action.Action" işlevini genişletmek daha alışılageldi. –

cevap

0

Tamam kısmen çözülmüştür. Greg-449, IAction stili için IAction.AS_RADIO_BUTTON kullanılmasını önerdi. Ayırıcıları kaldırdıktan sonra (onlar extends AbstractGroupMarker) araç çubuğumdan her zaman bir geçiş AŞAĞI (fare tıklatıldığında tüm diğer geçişler YUKARI olarak ayarlandığında). Şimdi ben programlı taban fiyatlar üzerinden geçmek gerekiyor, ben kullanın:

(benim IAction->runWithEvent işlevi düzgün denir anlamına gelir) başka bir perspektiften geçer ancak tıklandığında geçiş daha önce olduğu gibi AŞAĞI ayarlanmamış (anahtarlı değil
ActionContributionItem lItem = (ActionContributionItem)Facade.toolbar.getItems()[1]; 
lItem.getWidget().notifyListeners(SWT.Selection, new Event()); 

Kullanılan geçiş, DOWN)