Author: yzhishko
Date: 2010-03-11 10:04:48 -0500 (Thu, 11 Mar 2010)
New Revision: 20762
Modified:
trunk/jst/plugins/org.jboss.tools.jst.jsp/src/org/jboss/tools/jst/jsp/outline/cssdialog/FontFamilyDialog.java
Log:
https://jira.jboss.org/jira/browse/JBIDE-5875 - dialog was redesigned. Support to key
navigation was added.
Modified:
trunk/jst/plugins/org.jboss.tools.jst.jsp/src/org/jboss/tools/jst/jsp/outline/cssdialog/FontFamilyDialog.java
===================================================================
---
trunk/jst/plugins/org.jboss.tools.jst.jsp/src/org/jboss/tools/jst/jsp/outline/cssdialog/FontFamilyDialog.java 2010-03-11
15:00:38 UTC (rev 20761)
+++
trunk/jst/plugins/org.jboss.tools.jst.jsp/src/org/jboss/tools/jst/jsp/outline/cssdialog/FontFamilyDialog.java 2010-03-11
15:04:48 UTC (rev 20762)
@@ -12,524 +12,477 @@
import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.jface.resource.ImageDescriptor;
-
+import org.eclipse.jface.viewers.DoubleClickEvent;
+import org.eclipse.jface.viewers.IDoubleClickListener;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.viewers.TableViewer;
import org.eclipse.swt.SWT;
import org.eclipse.swt.dnd.DND;
-import org.eclipse.swt.dnd.DragSource;
import org.eclipse.swt.dnd.DragSourceEvent;
import org.eclipse.swt.dnd.DragSourceListener;
-import org.eclipse.swt.dnd.DropTarget;
import org.eclipse.swt.dnd.DropTargetAdapter;
import org.eclipse.swt.dnd.DropTargetEvent;
import org.eclipse.swt.dnd.TextTransfer;
import org.eclipse.swt.dnd.Transfer;
import org.eclipse.swt.events.DisposeEvent;
import org.eclipse.swt.events.DisposeListener;
-import org.eclipse.swt.events.MouseEvent;
-import org.eclipse.swt.events.MouseListener;
+import org.eclipse.swt.events.KeyEvent;
+import org.eclipse.swt.events.KeyListener;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.SelectionListener;
import org.eclipse.swt.graphics.FontData;
import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.layout.FormAttachment;
-import org.eclipse.swt.layout.FormData;
-import org.eclipse.swt.layout.FormLayout;
+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.List;
import org.eclipse.swt.widgets.Shell;
-
+import org.eclipse.swt.widgets.TableItem;
import org.jboss.tools.jst.jsp.JspEditorPlugin;
import org.jboss.tools.jst.jsp.messages.JstUIMessages;
import org.jboss.tools.jst.jsp.outline.cssdialog.common.Constants;
-
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
/**
* Class for choosing CCS font-family attribute
- *
+ *
* @author dsakovich(a)exadel.com
*/
public class FontFamilyDialog extends Dialog implements SelectionListener {
- private static final int HEIGHT = 300;
- private static final int BUTTON_TOP_OFFSET = 20;
- private static final int BUTTON_LEFT_OFFSET = 20;
- private static final int BUTTON_RIGHT_OFFSET = -20;
- private static final int BUTTON_RIGHT = 60;
- private static final int RIGHT_BUTTON_TOP = 30;
- private static final int LEFT_BUTTON_TOP = 40;
- private static final int LIST_TOP_OFFSET = 10;
- private static final int LIST_RIGHT_OFFSET = -10;
- private static final int LIST_LEFT_OFFSET = 10;
- private static final int LIST_BOTTOM_OFFSET = -10;
- private static final int LIST_TOP = 5;
- private static final int LIST_BOTTOM = 100;
- private static final int ALL_FONTS_LIST_LEFT = 0;
- private static final int ALL_FONTS_LIST_RIGHT = 40;
- private static final int SELECTED_FONT_LIST_LEFT = 60;
- private static final int SELECTED_FONT_LIST_RIGHT = 100;
+ private static final int VIEWER_HEIGHT = 300;
+ private static final int BUTTOND_WIDTH = 50;
+ private static final int VIEWER_WIDTH = 175;
- /** Font family string */
- private String fontFamily;
+ /** Font family string */
+ private String fontFamily;
- /** Existing font family */
- private String existFontFamily;
- private List fontFamilyList;
- private List allFontFamilyList;
- private Button rightButton;
- private Button leftButton;
+ /** Existing font family */
+ private String existFontFamily;
+ private TableViewer fontFamilyTable;
+ private TableViewer allFontFamilyTable;
+ private Button rightButton;
+ private Button leftButton;
+ private Composite buttonsContainer;
+ private static final String ALL_FONTS_TABLE_SOURCE = "all_fonts_table_source";
//$NON-NLS-1$
+ private static final String FONTS_TABLE_SOURCE = "fonts_table_source";
//$NON-NLS-1$
- /**
- * Constructor
- *
- * @param parentShell parent shell
- * @param existingFontFamily existing font family
- */
- public FontFamilyDialog(Shell parentShell, String existingFontFamily) {
- super(parentShell);
- this.existFontFamily = existingFontFamily;
- }
+ /**
+ * Constructor
+ *
+ * @param parentShell
+ * parent shell
+ * @param existingFontFamily
+ * existing font family
+ */
+ public FontFamilyDialog(Shell parentShell, String existingFontFamily) {
+ super(parentShell);
+ this.existFontFamily = existingFontFamily;
+ }
- /**
- * @see org.eclipse.jface.dialogs.Dialog#createDialogArea(Composite)
- */
- @Override
- protected Control createDialogArea(Composite parent) {
- final Composite composite = (Composite) super.createDialogArea(parent);
+ /**
+ * @see org.eclipse.jface.dialogs.Dialog#createDialogArea(Composite)
+ */
+ @Override
+ protected Control createDialogArea(Composite parent) {
+ final Composite composite = (Composite) super.createDialogArea(parent);
+ initControls(composite);
+ createLayout(composite);
+ initListeners();
+ initDND();
+ initDefaultContent(composite);
+ return composite;
+ }
- composite.setLayout(new FormLayout());
+ private void initDefaultContent(Composite composite) {
+ Set<String> s = new HashSet<String>();
+ FontData[] fds = composite.getDisplay().getFontList(null, false);
- allFontFamilyList = new List(composite, SWT.MULTI | SWT.BORDER | SWT.V_SCROLL);
+ for (int i = 0; i < fds.length; ++i) {
+ s.add(fds[i].getName());
+ }
+ fds = composite.getDisplay().getFontList(null, true);
- FormData fd = new FormData();
- fd.top = new FormAttachment(LIST_TOP, LIST_TOP_OFFSET);
- fd.left = new FormAttachment(ALL_FONTS_LIST_LEFT, LIST_LEFT_OFFSET);
- fd.bottom = new FormAttachment(LIST_BOTTOM, LIST_BOTTOM_OFFSET);
- fd.right = new FormAttachment(ALL_FONTS_LIST_RIGHT, LIST_RIGHT_OFFSET);
- fd.height = HEIGHT;
- allFontFamilyList.setLayoutData(fd);
+ for (int i = 0; i < fds.length; ++i) {
+ s.add(fds[i].getName());
+ }
+ String[] existFonts = fontFamilyParser();
+ Arrays.sort(existFonts);
- Set<String> s = new HashSet<String>();
- FontData[] fds = composite.getDisplay().getFontList(null, false);
+ String[] answer = new String[s.size()];
+ s.toArray(answer);
+ Arrays.sort(answer);
- for (int i = 0; i < fds.length; ++i) {
- s.add(fds[i].getName());
- }
- fds = composite.getDisplay().getFontList(null, true);
+ for (int i = 0; i < answer.length; i++) {
+ allFontFamilyTable.add(answer[i]);
+ }
- for (int i = 0; i < fds.length; ++i) {
- s.add(fds[i].getName());
- }
- String[] existFonts = fontFamilyParser();
- Arrays.sort(existFonts);
+ if ((existFontFamily != null)
+ && !existFontFamily.equals(Constants.EMPTY)) {
+ for (int i = 0; i < existFonts.length; i++) {
+ fontFamilyTable.add(existFonts[i]);
+ allFontFamilyTable.remove(existFonts[i]);
+ }
+ }
+ }
- String[] answer = new String[s.size()];
- s.toArray(answer);
- Arrays.sort(answer);
+ private void initDND() {
+ Transfer[] types = new Transfer[] { TextTransfer.getInstance() };
- for (int i = 0; i < answer.length; i++) {
- allFontFamilyList.add(answer[i]);
- }
+ allFontFamilyTable.addDragSupport(DND.DROP_MOVE, types,
+ new DragSourceListener() {
- rightButton = new Button(composite, SWT.PUSH);
- fd = new FormData();
- fd.top = new FormAttachment(RIGHT_BUTTON_TOP, BUTTON_TOP_OFFSET);
- fd.left = new FormAttachment(allFontFamilyList, BUTTON_LEFT_OFFSET);
- fd.right = new FormAttachment(BUTTON_RIGHT, BUTTON_RIGHT_OFFSET);
- rightButton.setLayoutData(fd);
- rightButton.setToolTipText(JstUIMessages.ADD_FONT_FAMILY_TIP);
+ public void dragFinished(DragSourceEvent event) {
+ if (event.doit) {
+ if (event.detail == DND.DROP_MOVE) {
+ handleAddFont();
+ }
+ }
+ }
- ImageDescriptor rightDesc =
JspEditorPlugin.getImageDescriptor(Constants.IMAGE_RIGHT_FILE_LOCATION);
- Image rightImage = rightDesc.createImage();
- rightButton.setImage(rightImage);
- rightButton.setEnabled(false);
- rightButton.addDisposeListener(new DisposeListener() {
- public void widgetDisposed(DisposeEvent e) {
- Button button = (Button) e.getSource();
- button.getImage().dispose();
- }
- });
- leftButton = new Button(composite, SWT.PUSH);
- fd = new FormData();
- fd.top = new FormAttachment(LEFT_BUTTON_TOP, BUTTON_TOP_OFFSET);
- fd.left = new FormAttachment(allFontFamilyList, BUTTON_LEFT_OFFSET);
- fd.right = new FormAttachment(BUTTON_RIGHT, BUTTON_RIGHT_OFFSET);
- leftButton.setLayoutData(fd);
- leftButton.setToolTipText(JstUIMessages.REMOVE_FONT_FAMILY_TIP);
+ public void dragSetData(DragSourceEvent event) {
+ event.data = ALL_FONTS_TABLE_SOURCE;
+ }
- ImageDescriptor leftDesc =
JspEditorPlugin.getImageDescriptor(Constants.IMAGE_LEFT_FILE_LOCATION);
- Image leftImage = leftDesc.createImage();
- leftButton.setImage(leftImage);
- leftButton.setEnabled(false);
- leftButton.addDisposeListener(new DisposeListener() {
- public void widgetDisposed(DisposeEvent e) {
- Button button = (Button) e.getSource();
- button.getImage().dispose();
- }
- });
+ public void dragStart(DragSourceEvent event) {
+ event.doit = allFontFamilyTable.getTable()
+ .getSelectionCount() > 0;
+ }
+ });
- fontFamilyList = new List(composite, SWT.SINGLE | SWT.BORDER | SWT.V_SCROLL);
- fd = new FormData();
- fd.top = new FormAttachment(LIST_TOP, LIST_TOP_OFFSET);
- fd.left = new FormAttachment(SELECTED_FONT_LIST_LEFT, LIST_LEFT_OFFSET);
- fd.bottom = new FormAttachment(LIST_BOTTOM, LIST_BOTTOM_OFFSET);
- fd.right = new FormAttachment(SELECTED_FONT_LIST_RIGHT, LIST_RIGHT_OFFSET);
- fd.height = HEIGHT;
- fontFamilyList.setLayoutData(fd);
+ allFontFamilyTable.addDropSupport(DND.DROP_MOVE, types,
+ new DropTargetAdapter() {
- if ((existFontFamily != null) &&
!existFontFamily.equals(Constants.EMPTY)) {
- for (int i = 0; i < existFonts.length; i++) {
- fontFamilyList.add(existFonts[i]);
- }
- }
-
- /** Control listeners */
- allFontFamilyList.addMouseListener(new MouseListener() {
- public void mouseDoubleClick(MouseEvent e) {
- int selectedItem = allFontFamilyList.getSelectionIndex();
- allFontFamilyList.deselectAll();
- if (selectedItem == -1) {
- return;
+ @Override
+ public void drop(DropTargetEvent event) {
+ if (event.data == null
+ || event.data.equals(ALL_FONTS_TABLE_SOURCE)) {
+ event.detail = DND.DROP_NONE;
+ return;
+ }
}
- addFont(fontFamilyList, allFontFamilyList.getItem(selectedItem));
- allFontFamilyList.remove(selectedItem);
- rightButton.setEnabled(false);
- }
- public void mouseDown(MouseEvent e) {
- if (allFontFamilyList.getSelectionCount() > 0) {
- fontFamilyList.deselectAll();
- leftButton.setEnabled(false);
- rightButton.setEnabled(true);
- }
- }
+ });
- public void mouseUp(MouseEvent e) {
- }
- });
+ fontFamilyTable.addDragSupport(DND.DROP_MOVE, types,
+ new DragSourceListener() {
- fontFamilyList.addMouseListener(new MouseListener() {
- public void mouseDoubleClick(MouseEvent e) {
- leftButton.setEnabled(false);
+ public void dragFinished(DragSourceEvent event) {
+ if (event.doit) {
+ if (event.detail == DND.DROP_MOVE) {
+ handleRemoveFont();
+ }
+ }
+ }
- int selectedItem = fontFamilyList.getSelectionIndex();
- fontFamilyList.deselectAll();
- if (selectedItem == -1) {
- return;
+ public void dragSetData(DragSourceEvent event) {
+ event.data = FONTS_TABLE_SOURCE;
}
- addFont(allFontFamilyList, fontFamilyList.getItem(selectedItem));
- fontFamilyList.remove(selectedItem);
- }
- public void mouseDown(MouseEvent e) {
- if (fontFamilyList.getSelectionCount() > 0) {
- allFontFamilyList.deselectAll();
- rightButton.setEnabled(false);
- leftButton.setEnabled(true);
- }
- }
+ public void dragStart(DragSourceEvent event) {
+ event.doit = fontFamilyTable.getTable()
+ .getSelectionCount() > 0;
+ }
+ });
- public void mouseUp(MouseEvent e) {
- }
- });
+ fontFamilyTable.addDropSupport(DND.DROP_MOVE, types,
+ new DropTargetAdapter() {
+ @Override
+ public void drop(DropTargetEvent event) {
+ if (event.data == null
+ || event.data.equals(FONTS_TABLE_SOURCE)) {
+ event.detail = DND.DROP_NONE;
+ return;
+ }
+ }
+ });
- rightButton.addSelectionListener(this);
- leftButton.addSelectionListener(this);
+ }
- /** Add drag and drop */
- Transfer[] types = new Transfer[] { TextTransfer.getInstance() };
+ private void initListeners() {
+ /** Control listeners */
+ allFontFamilyTable.addDoubleClickListener(new IDoubleClickListener() {
- final DragSource source = new DragSource(allFontFamilyList, DND.DROP_MOVE);
- source.setTransfer(types);
- source.addDragListener(new DragSourceListener() {
- public void dragFinished(DragSourceEvent event) {
- if (event.detail == DND.DROP_MOVE) {
- int selectedItem = allFontFamilyList.getSelectionIndex();
+ public void doubleClick(DoubleClickEvent event) {
+ handleAddFont();
+ }
+ });
- if ((allFontFamilyList.getItemCount() > selectedItem)
&& (selectedItem >= 0)) {
- allFontFamilyList.remove(selectedItem);
- }
- }
- }
+ allFontFamilyTable
+ .addSelectionChangedListener(new ISelectionChangedListener() {
- public void dragSetData(DragSourceEvent event) {
- int selectedItem = allFontFamilyList.getSelectionIndex();
- event.data = allFontFamilyList.getItem(selectedItem);
- }
+ public void selectionChanged(SelectionChangedEvent event) {
+ fontFamilyTable.getTable().deselectAll();
+ leftButton.setEnabled(false);
+ rightButton.setEnabled(true);
+ }
+ });
- public void dragStart(DragSourceEvent event) {
- event.doit = (allFontFamilyList.getSelectionCount() != 0);
- }
- });
+ fontFamilyTable
+ .addSelectionChangedListener(new ISelectionChangedListener() {
- DropTarget target = new DropTarget(fontFamilyList, DND.DROP_MOVE);
- target.setTransfer(types);
- target.addDropListener(new DropTargetAdapter() {
- public void drop(DropTargetEvent event) {
- if (event.data == null) {
- event.detail = DND.DROP_NONE;
+ public void selectionChanged(SelectionChangedEvent event) {
+ allFontFamilyTable.getTable().deselectAll();
+ rightButton.setEnabled(false);
+ leftButton.setEnabled(true);
+ }
+ });
- return;
- }
+ fontFamilyTable.addDoubleClickListener(new IDoubleClickListener() {
- addFont(fontFamilyList, ((String) event.data));
- rightButton.setEnabled(false);
- }
- });
+ public void doubleClick(DoubleClickEvent event) {
+ handleRemoveFont();
+ }
+ });
- final DragSource sourceBack = new DragSource(fontFamilyList, DND.DROP_MOVE);
- sourceBack.setTransfer(types);
- sourceBack.addDragListener(new DragSourceListener() {
- public void dragFinished(DragSourceEvent event) {
- if (event.detail == DND.DROP_MOVE) {
- int selectedItem = fontFamilyList.getSelectionIndex();
+ fontFamilyTable.getTable().addKeyListener(new KeyListener() {
+
+ public void keyReleased(KeyEvent e) {
+ if (SWT.ARROW_LEFT == e.keyCode && SWT.ALT == e.stateMask) {
+ handleRemoveFont();
+ }
+ }
+
+ public void keyPressed(KeyEvent e) {
+ }
+ });
+
+ allFontFamilyTable.getTable().addKeyListener(new KeyListener() {
+
+ public void keyReleased(KeyEvent e) {
+ if (SWT.ARROW_RIGHT== e.keyCode && SWT.ALT == e.stateMask) {
+ handleAddFont();
+ }
+ }
+
+ public void keyPressed(KeyEvent e) {
+ }
+ });
+
+ rightButton.addSelectionListener(this);
+ leftButton.addSelectionListener(this);
+ }
- if ((fontFamilyList.getItemCount() > selectedItem) &&
(selectedItem >= 0)) {
- fontFamilyList.remove(selectedItem);
- }
- }
- }
+ private void createLayout(Composite composite) {
+ final GridLayout gridLayout = new GridLayout();
+ gridLayout.numColumns = 3;
+ composite.setLayout(gridLayout);
+ GridData gridData = new GridData(SWT.FILL, SWT.FILL, true, true);
+ composite.setLayoutData(gridData);
- public void dragSetData(DragSourceEvent event) {
- int selectedItem = fontFamilyList.getSelectionIndex();
- event.data = fontFamilyList.getItem(selectedItem);
- }
+ gridData = new GridData(SWT.FILL, SWT.FILL, true, true);
+ gridData.heightHint = VIEWER_HEIGHT;
+ gridData.widthHint = VIEWER_WIDTH;
+ allFontFamilyTable.getTable().setLayoutData(gridData);
- public void dragStart(DragSourceEvent event) {
- event.doit = (fontFamilyList.getSelectionCount() != 0);
- }
- });
+ gridData = new GridData(SWT.FILL, SWT.FILL, true, true);
+ gridData.heightHint = VIEWER_HEIGHT;
+ gridData.widthHint = VIEWER_WIDTH;
+ fontFamilyTable.getTable().setLayoutData(gridData);
- DropTarget targetBack = new DropTarget(allFontFamilyList, DND.DROP_MOVE);
- targetBack.setTransfer(types);
- targetBack.addDropListener(new DropTargetAdapter() {
- public void drop(DropTargetEvent event) {
- if (event.data == null) {
- event.detail = DND.DROP_NONE;
+ final GridLayout btmContGridLayout = new GridLayout();
+ btmContGridLayout.numColumns = 1;
+ buttonsContainer.setLayout(btmContGridLayout);
- return;
- }
+ gridData = new GridData(SWT.FILL, SWT.FILL, true, true);
+ gridData.widthHint = BUTTOND_WIDTH;
+ rightButton.setLayoutData(gridData);
- addFont(allFontFamilyList, ((String) event.data));
- leftButton.setEnabled(false);
- }
- });
+ gridData = new GridData(SWT.FILL, SWT.FILL, true, true);
+ gridData.widthHint = BUTTOND_WIDTH;
+ leftButton.setLayoutData(gridData);
- return composite;
- }
+ }
- /**
- * Set title for dialog
- */
- protected void configureShell(Shell newShell) {
- super.configureShell(newShell);
- newShell.setText(JstUIMessages.FONT_FAMILY_DIALOG_TITLE);
- }
+ private void initControls(Composite composite) {
+ allFontFamilyTable = new TableViewer(composite, SWT.MULTI
+ | SWT.V_SCROLL | SWT.H_SCROLL | SWT.BORDER);
+ buttonsContainer = new Composite(composite, SWT.NONE);
+ rightButton = new Button(buttonsContainer, SWT.PUSH);
+ leftButton = new Button(buttonsContainer, SWT.PUSH);
+ fontFamilyTable = new TableViewer(composite, SWT.MULTI | SWT.BORDER
+ | SWT.V_SCROLL | SWT.H_SCROLL);
+ rightButton.setToolTipText(JstUIMessages.ADD_FONT_FAMILY_TIP);
+ ImageDescriptor rightDesc = JspEditorPlugin
+ .getImageDescriptor(Constants.IMAGE_RIGHT_FILE_LOCATION);
+ Image rightImage = rightDesc.createImage();
+ rightButton.setImage(rightImage);
+ rightButton.setEnabled(false);
+ rightButton.addDisposeListener(new DisposeListener() {
+ public void widgetDisposed(DisposeEvent e) {
+ Button button = (Button) e.getSource();
+ button.getImage().dispose();
+ }
+ });
- /**
- * @see org.eclipse.jface.dialogs.Dialog#okPressed()
- */
- @Override
- protected void okPressed() {
- String[] items = fontFamilyList.getItems();
- StringBuffer buf = new StringBuffer();
+ leftButton.setToolTipText(JstUIMessages.REMOVE_FONT_FAMILY_TIP);
- for (int i = 0; i < items.length; i++) {
- buf.append(((i == 0) ? Constants.EMPTY : Constants.COMMA) + items[i]);
- }
+ ImageDescriptor leftDesc = JspEditorPlugin
+ .getImageDescriptor(Constants.IMAGE_LEFT_FILE_LOCATION);
+ Image leftImage = leftDesc.createImage();
+ leftButton.setImage(leftImage);
+ leftButton.setEnabled(false);
+ leftButton.addDisposeListener(new DisposeListener() {
+ public void widgetDisposed(DisposeEvent e) {
+ Button button = (Button) e.getSource();
+ button.getImage().dispose();
+ }
+ });
+ }
- fontFamily = buf.toString();
- super.okPressed();
- }
+ private void handleAddFont() {
+ TableItem[] selectedItems = allFontFamilyTable.getTable()
+ .getSelection();
+ if (selectedItems != null) {
+ Object[] data = new Object[selectedItems.length];
+ for (int i = 0; i < selectedItems.length; i++) {
+ data[i] = selectedItems[i].getData();
+ }
+ fontFamilyTable.add(data);
+ allFontFamilyTable.remove(data);
+ rightButton.setEnabled(false);
+ leftButton.setEnabled(false);
+ }
- /**
- * Method for add to font to sorted list
- *
- * @param list
- * @param font
- */
- private void addFont(List list, String font) {
- Set<String> s = new HashSet<String>();
- String[] items = list.getItems();
- list.removeAll();
+ }
- for (int i = 0; i < items.length; i++) {
- s.add(items[i]);
- }
+ private void handleRemoveFont() {
+ TableItem[] selectedItems = fontFamilyTable.getTable().getSelection();
+ if (selectedItems != null) {
+ Object[] data = new Object[selectedItems.length];
+ for (int i = 0; i < selectedItems.length; i++) {
+ data[i] = selectedItems[i].getData();
+ }
+ addFonts(allFontFamilyTable, data);
+ fontFamilyTable.remove(data);
+ rightButton.setEnabled(false);
+ leftButton.setEnabled(false);
+ }
+ }
- s.add(font);
+ /**
+ * Set title for dialog
+ */
+ protected void configureShell(Shell newShell) {
+ super.configureShell(newShell);
+ newShell.setText(JstUIMessages.FONT_FAMILY_DIALOG_TITLE);
+ }
- String[] answer = new String[s.size()];
- s.toArray(answer);
- Arrays.sort(answer);
+ /**
+ * @see org.eclipse.jface.dialogs.Dialog#okPressed()
+ */
+ @Override
+ protected void okPressed() {
+ TableItem[] items = fontFamilyTable.getTable().getItems();
+ StringBuffer buf = new StringBuffer();
- for (int i = 0; i < answer.length; i++) {
- list.add(answer[i]);
- }
- }
+ for (int i = 0; i < items.length; i++) {
+ buf.append(((i == 0) ? Constants.EMPTY : Constants.COMMA)
+ + items[i].getData());
+ }
- /**
- * Getter for fontFamily attribute
- *
- * @return fontFamily
- */
- public String getFontFamily() {
- return fontFamily;
- }
+ fontFamily = buf.toString();
+ super.okPressed();
+ }
- /**
- * Setter for fontFamily attribute
- *
- * @param fontFamily
- */
- public void setFontFamily(String fontFamily) {
- this.fontFamily = fontFamily;
- }
+ /**
+ * Method for add to font to sorted list
+ *
+ * @param table
+ * @param fonts
+ */
+ private void addFonts(TableViewer table, Object[] fonts) {
+ Set<Object> s = new HashSet<Object>();
+ TableItem[] items = table.getTable().getItems();
- /**
- * Method for parse font family string
- *
- * @param font
- * family string
- * @return list font family
- */
- private String[] fontFamilyParser() {
- existFontFamily = existFontFamily.trim();
+ for (int i = 0; i < items.length; i++) {
+ s.add(items[i].getData());
+ }
- return existFontFamily.split(Constants.COMMA);
- }
+ for (int i = 0; i < fonts.length; i++) {
+ s.add(fonts[i]);
+ }
+ table.getTable().removeAll();
- /**
- * Selection listener
- *
- * @see
org.eclipse.swt.events.SelectionListener#widgetDefaultSelected(SelectionEvent)
- */
- public void widgetDefaultSelected(SelectionEvent e) {
- Object ob = e.getSource();
+ String[] answer = new String[s.size()];
+ s.toArray(answer);
+ Arrays.sort(answer);
- if (ob.equals(leftButton)) {
- int[] selectedItems = fontFamilyList.getSelectionIndices();
- String[] items = allFontFamilyList.getItems();
- Set<String> s = new HashSet<String>();
+ for (int i = 0; i < answer.length; i++) {
+ table.add(answer[i]);
+ }
+ }
- for (int i = 0; i < items.length; i++) {
- s.add(items[i]);
- }
+ /**
+ * Getter for fontFamily attribute
+ *
+ * @return fontFamily
+ */
+ public String getFontFamily() {
+ return fontFamily;
+ }
- for (int i = 0; i < selectedItems.length; i++) {
- s.add(fontFamilyList.getItem(selectedItems[i]));
- }
+ /**
+ * Setter for fontFamily attribute
+ *
+ * @param fontFamily
+ */
+ public void setFontFamily(String fontFamily) {
+ this.fontFamily = fontFamily;
+ }
- allFontFamilyList.removeAll();
+ /**
+ * Method for parse font family string
+ *
+ * @param font
+ * family string
+ * @return list font family
+ */
+ private String[] fontFamilyParser() {
+ existFontFamily = existFontFamily.trim();
- String[] answer = new String[s.size()];
- s.toArray(answer);
- Arrays.sort(answer);
+ return existFontFamily.split(Constants.COMMA);
+ }
- for (int i = 0; i < answer.length; i++) {
- allFontFamilyList.add(answer[i]);
- }
+ /**
+ * Selection listener
+ *
+ * @see org.eclipse.swt.events.SelectionListener#widgetDefaultSelected(SelectionEvent)
+ */
+ public void widgetDefaultSelected(SelectionEvent e) {
+ Object ob = e.getSource();
- fontFamilyList.remove(selectedItems);
- leftButton.setEnabled(false);
- } else if (ob.equals(rightButton)) {
- int[] selectedItems = allFontFamilyList.getSelectionIndices();
- String[] items = fontFamilyList.getItems();
- Set<String> s = new HashSet<String>();
+ if (ob.equals(leftButton)) {
+ handleRemoveFont();
+ } else if (ob.equals(rightButton)) {
+ handleAddFont();
+ } else if (ob.equals(allFontFamilyTable)) {
+ fontFamilyTable.getTable().deselectAll();
+ leftButton.setEnabled(false);
+ rightButton.setEnabled(true);
+ } else if (ob.equals(fontFamilyTable)) {
+ allFontFamilyTable.getTable().deselectAll();
+ rightButton.setEnabled(false);
+ leftButton.setEnabled(true);
+ }
+ }
- for (int i = 0; i < items.length; i++) {
- s.add(items[i]);
- }
+ /**
+ * Selection listener
+ *
+ * @see org.eclipse.swt.events.SelectionListener#widgetSelected(SelectionEvent)
+ */
+ public void widgetSelected(SelectionEvent e) {
+ Object ob = e.getSource();
- for (int i = 0; i < selectedItems.length; i++) {
- s.add(allFontFamilyList.getItem(selectedItems[i]));
- }
-
- fontFamilyList.removeAll();
-
- String[] answer = new String[s.size()];
- s.toArray(answer);
- Arrays.sort(answer);
-
- for (int i = 0; i < answer.length; i++) {
- fontFamilyList.add(answer[i]);
- }
-
- allFontFamilyList.remove(selectedItems);
- rightButton.setEnabled(false);
- } else if (ob.equals(allFontFamilyList)) {
- fontFamilyList.deselectAll();
- leftButton.setEnabled(false);
- rightButton.setEnabled(true);
- } else if (ob.equals(fontFamilyList)) {
- allFontFamilyList.deselectAll();
- rightButton.setEnabled(false);
- leftButton.setEnabled(true);
- }
- }
-
- /**
- * Selection listener
- *
- * @see org.eclipse.swt.events.SelectionListener#widgetSelected(SelectionEvent)
- */
- public void widgetSelected(SelectionEvent e) {
- Object ob = e.getSource();
-
- if (ob.equals(leftButton)) {
- int[] selectedItems = fontFamilyList.getSelectionIndices();
- String[] items = allFontFamilyList.getItems();
- Set<String> s = new HashSet<String>();
-
- for (int i = 0; i < items.length; i++) {
- s.add(items[i]);
- }
-
- for (int i = 0; i < selectedItems.length; i++) {
- s.add(fontFamilyList.getItem(selectedItems[i]));
- }
-
- allFontFamilyList.removeAll();
-
- String[] answer = new String[s.size()];
- s.toArray(answer);
- Arrays.sort(answer);
-
- for (int i = 0; i < answer.length; i++) {
- allFontFamilyList.add(answer[i]);
- }
-
- fontFamilyList.remove(selectedItems);
- leftButton.setEnabled(false);
- } else if (ob.equals(rightButton)) {
- int[] selectedItems = allFontFamilyList.getSelectionIndices();
- String[] items = fontFamilyList.getItems();
- Set<String> s = new HashSet<String>();
-
- for (int i = 0; i < items.length; i++) {
- s.add(items[i]);
- }
-
- for (int i = 0; i < selectedItems.length; i++) {
- s.add(allFontFamilyList.getItem(selectedItems[i]));
- }
-
- fontFamilyList.removeAll();
-
- String[] answer = new String[s.size()];
- s.toArray(answer);
- Arrays.sort(answer);
-
- for (int i = 0; i < answer.length; i++) {
- fontFamilyList.add(answer[i]);
- }
-
- allFontFamilyList.remove(selectedItems);
- rightButton.setEnabled(false);
- }
- }
+ if (ob.equals(leftButton)) {
+ handleRemoveFont();
+ } else if (ob.equals(rightButton)) {
+ handleAddFont();
+ }
+ }
}