пытаюсь добавить ячейку ссылки в мой GWT cellTable - PullRequest
1 голос
/ 09 февраля 2012

Я пытаюсь добавить ссылку в таблицу ячеек (я просто хочу, чтобы элемент был подчеркнут, а при наведении курсора мыши был изменен символ)

и по нажатию я просто хочу дать окно оповещения.

для этого я попробовал эти варианты: (но не повезло)

1)

           final Hyperlink hyp  = new Hyperlink("test", "test");


    Column<EmployerJobs, Hyperlink> test = new Column<EmployerJobs, Hyperlink>(new HyperLinkCell())

    {
        @Override
        public Hyperlink getValue(EmployerJobs object)
        {
        return hyp;
        }
    };

Проблема с вариантом 1 заключается в том, что я перехожу на навигационную страницу "test", в то время как я не хочу переходить на любую другую страницу, мне просто нужно окно предупреждения.

2)

         Column<EmployerJobs, SafeHtml> test = new Column<EmployerJobs, SafeHtml>(new SafeHtmlCell())
    {
        @Override
        public SafeHtml getValue(EmployerJobs object)
        {
            SafeHtmlBuilder sb = new SafeHtmlBuilder();
            sb.appendEscaped("test");

                return sb.toSafeHtml();
        }
    }; 

проблема с вариантом 2 заключается в том, что я не знаю, что именно здесь вернуть, и это не подчеркивается.

3) наконец я пытаюсь добавить якорь в мою ячейку с помощью составной ячейки (так как в идеале я хочу три разных якоря в моей ОДНОЙ ячейке)

final Anchor anc = new Anchor();
    ArrayList list = new ArrayList();
    list.add(anc);
     CompositeCell ancCell = new CompositeCell(list);
    Column testColumn1 = new Column<EmployerJobs, Anchor>(ancCell) {

        @Override
        public Anchor getValue(EmployerJobs object) {


            return anc;
        }       
    };

Вариант 3 дает исключение.

Если вы поможете мне настроить любой из вышеперечисленных вариантов, я буду благодарен

Спасибо

1 Ответ

3 голосов
/ 09 февраля 2012

Вы делаете это совершенно неправильно. Вам нужно использовать ActionCell для подобных вещей или создать свою собственную ячейку. Пример кода:

    ActionCell.Delegate<String> delegate = new ActionCell.Delegate<String>(){ 
      public void execute(String value) { //this method will be executed as soon as someone clicks the cell
              Window.alert(value);

      } 
    };
    ActionCell<String> cell = new ActionCell<String>(safeHtmlTitle,delegate){

        @Override
        public void render(com.google.gwt.cell.client.Cell.Context context,  //we need to render link instead of default button
                String value, SafeHtmlBuilder sb) {
            sb.appendHtmlConstant("<a href='#'>");
            sb.appendEscaped(value);
            sb.appendHtmlConstant("</a>");
        }
    }; 

    Column testColumn1 = new Column<EmployerJobs, String>(cell) {

        @Override
        public String getValue(EmployerJobs object) { 
            //we have to return a value which will be passed into the actioncell

            return object.name;
        }       
    };

Я рекомендую прочитать официальную документацию для виджетов ячеек, поскольку это почти все, что вам нужно знать о виджетах ячеек.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...