Шаблон на Scout Eclipse TablePage

Искам да създам AbstractTemplatePageWithTable като шаблон.

Проблемът ми е, че когато създавате шаблон:

 MyPageTemplateTablePage
           |
           ---> MyTable Extends AbstractTable

или в код

public abstract class MyPageTemplateTablePage extends AbstractExtensiblePageWithTable<MyTable> {

  @Override
  protected String getConfiguredTitle() {

    return TEXTS.get("bla bla");
  }


  public abstract class MyTable extends AbstractExtensibleTable {


  }
}

Но когато създам страница от този шаблон, той създава „само“ страница.

 @PageData(MyPageTablePageData.class)
 public class MyPageTablePage extends MyPageTemplateTablePage {

   @Override
   protected String getConfiguredTitle() {

     return TEXTS.get("MyPage");
    }
  }

Това, което бих искал е да бъде създадено:

@PageData(MyPageTablePageData.class)
 public class MyPageTablePage extends MyPageTemplateTablePage {

   @Override
   protected String getConfiguredTitle() {

     return TEXTS.get("MyPage");
    }

    @Order(10.0)
    public class table extends MyPageTemplateTablePage.MyTable {


    }
  }

Защото, когато създавате шаблон, той трябва да е удобен за потребителя и да предоставя таблица. Има ли някаква анотация или нещо, което да убеди създателя на scout-eclipse на класа да създаде тази таблица.


person Marko Zadravec    schedule 26.02.2015    source източник


Отговори (1)


Наистина е трудно да има съветници, които отговарят на всички нужди в Scout SDK. Тъй като Scout е обикновена Java, можете да организирате кода както желаете. Има 2 класа: Table и TablePage наличието на Table като вътрешен клас на TablePage е удобно, но не е задължително, особено ако подготвяте шаблони.

Ако имате логика на вашата таблица (като общи методи или вътрешни класове за менюта или колони), препоръчвам ви да създадете първи шаблон на таблица:

public abstract class AbstractMyTable extends AbstractTable {
  //some custom logic.
}

След това можете да дефинирате шаблон на TablePage с помощта на Generic. Можете дори да ограничите таблицата да бъде от тип AbstractMyTable

public abstract class AbstractMyTablePage<T extends AbstractMyTable> extends AbstractPageWithTable<T> {
  //some custom logic.
}

Може да загубите част от поддръжката на SDK, като използвате този модел, но когато създавате нова страница с таблица, можете да промените кода си, за да използвате шаблона на таблицата и шаблона на страницата на таблицата:

@PageData(XxxxTablePageData.class)
public class XxxxTablePage extends AbstractMyTablePage<Table> {

  @Order(1000.0)
  public class Table extends AbstractMyTable {

  }
}
person Jmini    schedule 02.03.2015