Definições de caixa de diálogo

O pacote org.eclipse.jface.dialogs faculta uma classe utilitária, DialogSettings, para armazenar e obter valores por chaves. Poderá utilizar esta classe para guardar e obter tipos de dados primitivos e valores de cadeia de caracteres que associe a nomes chave. As definições são carregadas e guardadas mediante ficheiro XML.

O AbstractUIPlugin proporciona suporte para definições de caixas de diálogo de plug-ins armazenadas num ficheiro XML no directório de plug-ins. Se determinado ficheiro de definições de caixa de diálogo não se encontrar no directório de plug-ins, serão criadas DialogSettings vazias para o utilizador. Quando o plug-in é encerrado, as definições que lhe tenham sido adicionadas serão guardadas num ficheiro XML e obtidas na ocasião seguinte em que ocorrer o arranque do plug-in.

Poderá aceder às definições de caixa de diálogo em qualquer ponto do código do plug-in. A porção seguinte mostra como obter as definições de caixa de diálogo para a ferramenta readme.

      IDialogSettings settings = ReadmePlugin.getDefault().getDialogSettings();

Os valores são armazenados e obtidos com métodos get e put. Os métodos get são denominados segundo o tipo primitivo que esteja a ser acedido. Poderá armazenar e obter valores booleanos, longos, duplos, flutuantes, de número inteiro, de matriz e de cadeia de caracteres (boolean, long, double, float, int, array e string). A porção de código seguinte mostra como podemos utilizar definições de caixa de diálogo para inicializar valores de controlo numa caixa de diálogo.

   protected Control createDialogArea(Composite parent) {
      IDialogSettings settings = ReadmePlugin.getDefault().getDialogSettings();
      checkbox = new Button(parent,SWT.CHECK);
      checkbox.setText("Generate sample section titles");
      // initialize the checkbox according to the dialog settings
      checkbox.setSelection(settings.getBoolean("GenSections"));
   }

O valor da definição pode ser armazenado mais tarde quando for premido o botão OK.

   protected void okPressed() {
      IDialogSettings settings = ReadmePlugin.getDefault().getDialogSettings();
      // store the value of the generate sections checkbox
      settings.put("GenSections", checkbox.getSelection());
      super.okPressed();
   }

Definições dos controlos da caixa de diálogo

Geralmente, a definição e a interpretação das definições da caixa de diálogo são da responsabilidade do plug-in. Contudo, existem algumas chaves de definições específicas da caixa de diálogo definidas no enquadramento da caixa de diálogo do JFace que são utilizadas para memorizar o último tamanho e a última posição de uma caixa de diálogo, de modo a que a mesma possa ser aberta com esse tamanho e essa posição na próxima invocação. O enquadramento irá consultar e armazenar o tamanho e a posição da caixa de diálogo, mas terá de ser o utilizador a implementar um método que forneça a instância IDialogSettings a ser utilizada para armazenar as informações sobre os contornos da caixa de diálogo. O seguinte fragmento apresenta a forma como a SectionsDialog deverá tomar partido desta função.

   protected IDialogSettings getDialogBoundsSettings() {
	   return ReadmePlugin.getDefault().getDialogSettings();
   }

Ao implementar este método, o tamanho e a posição da SectionsDialog serão armazenados em chaves predefinidas nas definições da caixa de diálogo do plug-in, o que fará com que a caixa de diálogo abra na localização anterior.