禁用模式下的sencha中的DualListField

时间:2013-07-24 03:01:43

标签: gwt extjs gxt

我正在使用来自sencha(com.sencha.gxt.widget.core.client.form.DualListField)的DualListField小部件,如本例中所述(http://www.sencha.com/examples/#ExamplePlace:duallistfield)。

我想在禁用模式下渲染它(在我的只读视图中)。我在打电话

  field.setEnableDnd(enabled);
  field.setEnabled(enabled);

这将禁用拖放操作,并以灰色格式显示窗口小部件。但是,它仍然呈现按钮,它们仍然可以点击并且正常工作。

我只是想知道是否有任何方法可以禁用它们?我试图扩展类,但没有找到任何方法来禁用它们。有人可以帮忙吗。

感谢。

1 个答案:

答案 0 :(得分:0)

class CustomDualListField<D, T> extends DualListField<D, T> {

   public CustomDualListField(ListStore<D> fromStore, ListStore<D> toStore,
         ValueProvider<? super D, T> valueProvider, Cell<T> cell) {
      super(fromStore, toStore, valueProvider, cell);
   }

   private boolean enabled = true;

   @Override
   public void setEnabled(boolean enabled) {
      this.enabled = enabled;
      setEnableDnd(enabled);
      super.setEnabled(enabled);
   }

   @Override
   protected void onAllLeft() {
      if (!enabled) {
         return;
      }

      super.onAllLeft();
   }

   @Override
   protected void onAllRight() {
      if (!enabled) {
         return;
      }

      super.onAllRight();
   }

   @Override
   protected void onRight() {
      if (!enabled) {
         return;
      }

      super.onRight();
   }

   @Override
   protected void onLeft() {
      if (!enabled) {
         return;
      }

      super.onLeft();
   }
}