Поиск по этому блогу

вторник, 25 сентября 2012 г.

Как в GXT изменить ширину столбца таблицы по нажатию кнопки



Иногда возникает необходимость изменять ширину столбца таблицы динамически в зависимости от того какой ширины будет содержимое в ячейке. 

int width;
width = // вычисляем новую ширину столбца
// задаем столбцу новую ширину - 5 - номер столбца 

grid.getColumnModel().getColumn(5).setWidth(width); 
// перерисовываем таблицу с новым значением ширины столбца
grid.getView().refresh(true); 
// теперь, если у нас в столбце содержится не просто текст, а      // сложный элемент,например ContentPanel, то содержимое тоже           // нужно растянуть на новую длину
for (int i = 0; i < grid.getStore().getCount(); i++) {
 Widget widget = grid.getView().getWidget(i, 5);
 BoxComponent bc = ((BoxComponent) widget);
 ContentPanel cp = (ContentPanel) bc;
// отнимаем 10 для того чтобы содержимое хорошо вписывалось в    //столбец
 cp.setWidth(width - 10); 

вторник, 18 сентября 2012 г.

Некоторые методы класса ContentPanel в GXT



Приведу тут обзор некоторых методов класса ContentPanel.

ContentPanel cp = new ContentPanel();

// делаем панель сворачиваемой
cp.setCollapsible(true);

// цвет фона - белый
cp.setBodyStyle("backgroundColor: white;");

// закругленные углы
cp.setFrame(true);

// убираем заголовок
cp.setHeaderVisible(false);

воскресенье, 16 сентября 2012 г.

Как отключить клавишу Enter в компоненте TextArea в GXT

Новый день преподносит новые тривиальные задачи. Однако для меня как для начинающего разработчика даже самые простые задачи могут отнять много времени и показаться очень сложными. Вот, сегодня, например, столкнулся с задачей отключения перевода указателя каретки с одной строки на другую по клавише Enter в компоненте TextArea.

TextArea notes = new TextArea();
notes.addKeyListener(new KeyListener() {
  public void componentKeyPress(final ComponentEvent event) {  
    if (event.getKeyCode() == 13) {     
         event.stopEvent();  
    }  
  }
});

* This source code was highlighted with Source Code Highlighter.



пятница, 14 сентября 2012 г.

Как удалить элемент со страницы в Javascript и в JNI


Снова столкнулся с задачей в которой необходимо использовать native javascript. На этот раз необходимо удалить элемент со страницы.

Как удаление элемента делается в JavaScipt

function removeElement(id) {
 
var element = document.getElementById(id);
 element.
parentNode.removeChild(element);
}


А вот как это удаление мы сделаем в Java

Создаем native метод для удаления элемента.

public static native void removeElFromPage(final com.google.gwt.dom.client.Element el)
   /*-{el.parentNode.removeChild(el);
   }-*/;


А тут собственно вызов этого метода

com.google.gwt.dom.client.Element el = Document.get().getElementById("diagReport");
               if (el != null) {
                   removeElFromPage(el);
               }

Как выровнять checkbox по центру в GXT


Казалось бы совершенно тривиальные задачи порой могут занять очень много времени. Причиной может быть обычное незнание рабочего способа. Вроде используешь методы, а они все не работают. Вот проверенный способ, чтобы выровнять checkbox по центру.

CheckColumnConfig() newCheckColumnConfig = new CheckColumnConfig();
       newCheckColumnConfig.setHeader("New");
       newCheckColumnConfig.setId("isNew");
       newCheckColumnConfig.setWidth(50);
       newCheckColumnConfig.setStyle("vertical-align:middle;");

четверг, 6 сентября 2012 г.

Как запустить jar файл из java программы


В проекте понадобилось запустить jar файл с параметрами из приложения. 
Вот небольшая тестовая программа которая запускает jar файл из java-кода.

import java.io.IOException;
public class ReportTest {

  public static void main(String[] args) throws IOException {
  
    String filePath = "C:/develop/workspaces/first/myfile.jar ";
    String param1 = " value1 ";
    String param2 = " value2 ";
    String param3 = " value3 ";
      
    Runtime re = Runtime.getRuntime();       
    try{
         re.exec("java -jar " + filePath + param1 + param2 + param3);      
    } catch (IOException ioe){
     ioe.printStackTrace();
    }
  }
}


* This source code was highlighted with Source Code Highlighter.

вторник, 21 августа 2012 г.

Небольшой пример работы с JSNI в GWT/GXT


Задача состоит в следующем - по нажатию на кнопку должен сработать переход по ссылке.
Java Script Native Interface позволяет Java разработчику работающему с GWT / GXT использовать в своем коде вставки на чистом JavaScript. У элемента ссылка есть метод click(), именно его мы и будем вызывать при помощи JSNI.

import com.extjs.gxt.ui.client.widget.Html;
import com.extjs.gxt.ui.client.widget.ContentPanel;
import com.extjs.gxt.ui.client.widget.Label;
import com.extjs.gxt.ui.client.widget.button.Button;
import com.extjs.gxt.ui.client.event.ButtonEvent;
import com.extjs.gxt.ui.client.event.SelectionListener;

public class SomeForm {

  // html фрагмент
  private final Html templateLink;
  // нативный метод, который вызывает метод click() у переданного ему элемента
  public static native void click(final com.google.gwt.dom.client.Element el)
  /*-{
   el.click();}
  -*/;

  // адрес ссылки 
  private static final String TEMPLATE_URI = "some/uri";

  public SomeForm()
  {
    ...
    // создаем кнопку и ее обработчик
    // по щелчку на кнопке вызывается переход по сслыке 
    Button someButton = new Button("Some Button"new SelectionListener<ButtonEvent>() {

      @Override
      public void componentSelected(final ButtonEvent ce) {

        com.google.gwt.dom.client.Element el =
         Document.get().getElementById("jsniClick");

        click(el);

      }

    });
    // добавляем кнопку и ссылку на панель
    ContentPanel cpLeft = new ContentPanel();
    cpLeft.setHeaderVisible(false);
    cpLeft.setBodyBorder(false);
    cpLeft.setButtonAlign(HorizontalAlignment.LEFT);

    cpLeft.addButton(someButton);
 
    templateLink = new Html("<a id='jsniClick' href='" + TEMPLATE_URI + "'></a>");

    cpLeft.add(new Label(templateLink.getHtml()));

    add(cpLeft);

  }

}


* This source code was highlighted with Source Code Highlighter.