gt:             if (index >= 0) {
context: /*
   * JBoss by Red Hat
   * Copyright 2006-2009, Red Hat Middleware, LLC, and individual contributors as indicated
   * by the @authors tag. See the copyright.txt in the distribution for a
   * full listing of individual contributors.
   *
   * This is free software; you can redistribute it and/or modify it
   * under the terms of the GNU Lesser General Public License as
   * published by the Free Software Foundation; either version 2.1 of
   * the License, or (at your option) any later version.
   *
   * This software is distributed in the hope that it will be useful,
   * but WITHOUT ANY WARRANTY; without even the implied warranty of
   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
   * Lesser General Public License for more details.
   *
   * You should have received a copy of the GNU Lesser General Public
   * License along with this software; if not, write to the Free
   * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
   * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
   */
  package org.jboss.ide.eclipse.freemarker.preferences;
  
  
  import java.util.Properties;
  
  import org.eclipse.core.resources.IProject;
  import org.eclipse.core.resources.IResource;
  import org.eclipse.jface.dialogs.IDialogConstants;
  import org.eclipse.jface.dialogs.MessageDialog;
  import org.eclipse.jface.viewers.ColumnLayoutData;
  import org.eclipse.jface.viewers.ColumnWeightData;
  import org.eclipse.jface.viewers.TableLayout;
  import org.eclipse.swt.SWT;
  import org.eclipse.swt.events.KeyEvent;
  import org.eclipse.swt.events.KeyListener;
  import org.eclipse.swt.events.MouseEvent;
  import org.eclipse.swt.events.MouseListener;
  import org.eclipse.swt.events.SelectionEvent;
  import org.eclipse.swt.events.SelectionListener;
  import org.eclipse.swt.layout.GridData;
  import org.eclipse.swt.layout.GridLayout;
  import org.eclipse.swt.widgets.Button;
  import org.eclipse.swt.widgets.Composite;
  import org.eclipse.swt.widgets.Control;
  import org.eclipse.swt.widgets.Shell;
  import org.eclipse.swt.widgets.Table;
  import org.eclipse.swt.widgets.TableColumn;
  import org.eclipse.swt.widgets.TableItem;
  import org.eclipse.ui.dialogs.PropertyPage;
  import org.jboss.ide.eclipse.freemarker.Messages;
  import org.jboss.ide.eclipse.freemarker.Plugin;
  import org.jboss.ide.eclipse.freemarker.configuration.ConfigurationManager;
  import org.jboss.ide.eclipse.freemarker.configuration.ContextValue;
  import org.jboss.ide.eclipse.freemarker.dialogs.ContextValueDialog;
  
  public class ContextProperties extends PropertyPage {
  
  	public ContextProperties() {
  		super();
  		setDescription(Messages.ContextProperties_Description);
  	}
  	
      protected Control createContents(Composite parent) {
          return createContextPage(parent);
      }
  
      private Table contextValuesTable;
      private Button editContextValueButton;
      private Button deleteContextValueButton;
      private Button addContextValueButton;
      private Properties contextValues;
      // private DirectoryEditor rootDirectory;
      
      private Control createContextPage(Composite parent) {
          contextValues = new Properties();
          Composite composite = new Composite(parent, SWT.NULL);
          composite.setLayout(new GridLayout(1, true));
          
          if (getElement() instanceof IProject) {
              IProject project = (IProject) getElement();
              Composite subComp = new Composite(composite, SWT.NULL);
              subComp.setLayout(new GridLayout(2, false));
              subComp.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
  //            try {
  //	            javascriptDirectory = new DirectoryEditor(getShell(), subComp, "Javascript Direcotory", project.getPersistentProperty(Constants.newQualifiedName(Constants.DIR_JAVASCRIPT)));
  //            }
  //            catch (CoreException ce) {}
          }
  
          Composite subComp = new Composite(composite, SWT.NULL);
          subComp.setLayout(new GridLayout(1, false));
          subComp.setLayoutData(new GridData(GridData.FILL_BOTH));
          GridData gridData = new GridData(GridData.GRAB_HORIZONTAL | GridData.GRAB_VERTICAL);
          contextValuesTable = new Table(subComp, SWT.BORDER | SWT.H_SCROLL
                  | SWT.FULL_SELECTION);
          contextValuesTable.setVisible(true);
          contextValuesTable.setLinesVisible(false);
          contextValuesTable.setHeaderVisible(true);
          contextValuesTable.addSelectionListener(new SelectionListener() {
              public void widgetSelected(SelectionEvent e) {
                  editContextValueButton.setEnabled(true);
                  deleteContextValueButton.setEnabled(true);
              }
  
              public void widgetDefaultSelected(SelectionEvent e) {
              }
          });
          contextValuesTable.addKeyListener(new ContextValueDeleteKeyListener());
          contextValuesTable
                  .addMouseListener(new EditContextValueButtonListener());
  
          // create the columns
          TableColumn keyColumn = new TableColumn(contextValuesTable, SWT.LEFT);
          TableColumn valueColumn = new TableColumn(contextValuesTable, SWT.LEFT);
          keyColumn.setText(Messages.ContextProperties_KeyColumn);
          valueColumn.setText(Messages.ContextProperties_ValueColumn);
          ColumnLayoutData keyColumnLayout = new ColumnWeightData(30, false);
          ColumnLayoutData valueColumnLayout = new ColumnWeightData(70, false);
  
          // set columns in Table layout
          TableLayout tableLayout = new TableLayout();
          tableLayout.addColumnData(keyColumnLayout);
          tableLayout.addColumnData(valueColumnLayout);
          contextValuesTable.setLayout(tableLayout);
  
          GridData data = new GridData(GridData.FILL_BOTH);
          data.heightHint = 50;
          data.grabExcessHorizontalSpace = true;
          data.grabExcessVerticalSpace = true;
          contextValuesTable.setLayoutData(data);
  
          Composite buttonComposite = new Composite(subComp, SWT.NONE);
          data = new GridData();
          data.horizontalAlignment = GridData.BEGINNING;
          data.verticalAlignment = GridData.BEGINNING;
          buttonComposite.setLayoutData(data);
          GridLayout gl = new GridLayout(3, true);
          buttonComposite.setLayout(gl);
          buttonComposite.setVisible(true);
          addContextValueButton = new Button(buttonComposite, SWT.NATIVE);
          addContextValueButton.setText(Messages.ContextProperties_NewButton);
          addContextValueButton.setVisible(true);
          addContextValueButton
                  .addSelectionListener(new AddContextValueButtonListener());
          data = new GridData();
          data.widthHint = 45;
          data.grabExcessHorizontalSpace = true;
          addContextValueButton.setLayoutData(data);
          editContextValueButton = new Button(buttonComposite, SWT.NATIVE);
          editContextValueButton.setText(Messages.ContextProperties_EditButton);
          editContextValueButton
                  .addSelectionListener(new EditContextValueButtonListener());
          data = new GridData();
          data.widthHint = 45;
          data.grabExcessHorizontalSpace = true;
          editContextValueButton.setLayoutData(data);
          deleteContextValueButton = new Button(buttonComposite, SWT.NATIVE);
          deleteContextValueButton.setText(Messages.ContextProperties_DeleteButton);
          deleteContextValueButton
                  .addSelectionListener(new ContextValueDeleteKeyListener());
          data = new GridData();
          data.widthHint = 45;
          data.grabExcessHorizontalSpace = true;
          deleteContextValueButton.setLayoutData(data);
  
          reloadContextValues();
          return composite;
      }
  
      public void reloadContextValues() {
          try {
              contextValuesTable.removeAll();
              ContextValue[] values = ConfigurationManager.getInstance(getResource().getProject())
                      .getContextValues(getResource(), false);
              for (int i = 0; i < values.length; i++) {
                  TableItem item = new TableItem(contextValuesTable, SWT.NULL);
                  String[] arr = { values[i].name, values[i].objClass.getName() };
                  item.setText(arr);
              }
              editContextValueButton.setEnabled(false);
              deleteContextValueButton.setEnabled(false);
          } catch (Exception e) {
              Plugin.log(e);
          }
          contextValuesTable.redraw();
      }
  
      public class AddContextValueButtonListener implements SelectionListener {
          public void mouseDoubleClick(MouseEvent e) {
              doWork();
          }
  
          public void mouseDown(MouseEvent e) {
          }
  
          public void mouseUp(MouseEvent e) {
          }
  
          public void widgetSelected(SelectionEvent e) {
              doWork();
          }
  
          public void widgetDefaultSelected(SelectionEvent e) {
          }
  
          public void doWork() {
              ContextValueDialog dialog = new ContextValueDialog(new Shell(),
                      null, getResource());
              if (IDialogConstants.OK_ID == dialog.open()) {
                  reloadContextValues();
              }
          }
      }
  
      public class EditContextValueButtonListener implements SelectionListener,
              MouseListener {
          public void mouseDoubleClick(MouseEvent e) {
              doWork();
          }
  
          public void mouseDown(MouseEvent e) {
          }
  
          public void mouseUp(MouseEvent e) {
          }
  
          public void widgetSelected(SelectionEvent e) {
              doWork();
          }
  
          public void widgetDefaultSelected(SelectionEvent e) {
          }
  
          public void doWork() {
              int index = contextValuesTable.getSelectionIndex();
  