summaryrefslogtreecommitdiffstats
path: root/com.gluster.storage.management.gui/src
diff options
context:
space:
mode:
authorShireesh Anjal <shireesh@gluster.com>2011-03-08 22:06:42 +0530
committerShireesh Anjal <shireesh@gluster.com>2011-03-08 22:06:42 +0530
commitfc16f56e2a95e23be6cf86ccfe7d4a6d3603baab (patch)
treea646ad0f3e0a87afb0c37805af63fb6183ff3a9c /com.gluster.storage.management.gui/src
parent2b73f885f9b9bba01b220cd0199b8040e299086f (diff)
Removed unnecessary plugin com.sun.jersey, introduced image caching.
Diffstat (limited to 'com.gluster.storage.management.gui/src')
-rw-r--r--com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/EntityGroupContentProvider.java1
-rw-r--r--com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/AddServerAction.java3
-rw-r--r--com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/CreateVolumeAction.java1
-rw-r--r--com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/utils/DatePicker.java531
-rw-r--r--com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/utils/DatePickerCombo.java1142
-rw-r--r--com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/utils/DiskViewerEditingSupport.java57
-rw-r--r--com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/utils/GUIHelper.java7
-rw-r--r--com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/utils/HyperlinkCellEditor.java68
-rw-r--r--com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/utils/ImageUtil.java51
-rw-r--r--com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/utils/LRUCache.java55
-rw-r--r--com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/details/DisksPage.java2
-rw-r--r--com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/details/TabCreatorFactoryImpl.java1
-rw-r--r--com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/navigator/ClusterAdapterFactory.java3
-rw-r--r--com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/navigator/NavigationTreeLabelDecorator.java1
14 files changed, 118 insertions, 1805 deletions
diff --git a/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/EntityGroupContentProvider.java b/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/EntityGroupContentProvider.java
index 0ff9937f..26848eef 100644
--- a/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/EntityGroupContentProvider.java
+++ b/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/EntityGroupContentProvider.java
@@ -34,6 +34,7 @@ public class EntityGroupContentProvider<T> implements
}
+ @SuppressWarnings("rawtypes")
@Override
public Object[] getElements(Object inputElement) {
if (inputElement instanceof EntityGroup) {
diff --git a/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/AddServerAction.java b/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/AddServerAction.java
index f621f308..559c5357 100644
--- a/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/AddServerAction.java
+++ b/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/AddServerAction.java
@@ -20,8 +20,6 @@ package com.gluster.storage.management.gui.actions;
import org.eclipse.jface.action.IAction;
import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.IWorkbenchWindowActionDelegate;
import com.gluster.storage.management.core.model.EntityGroup;
import com.gluster.storage.management.core.model.Volume;
@@ -37,6 +35,7 @@ public class AddServerAction extends AbstractActionDelegate {
System.out.println("Disposing [" + this.getClass().getSimpleName() + "]");
}
+ @SuppressWarnings("rawtypes")
@Override
public void selectionChanged(IAction action, ISelection selection) {
super.selectionChanged(action, selection);
diff --git a/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/CreateVolumeAction.java b/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/CreateVolumeAction.java
index da6768b2..07804c3e 100644
--- a/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/CreateVolumeAction.java
+++ b/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/CreateVolumeAction.java
@@ -42,6 +42,7 @@ public class CreateVolumeAction extends AbstractActionDelegate {
window = null;
}
+ @SuppressWarnings("rawtypes")
@Override
public void selectionChanged(IAction action, ISelection selection) {
super.selectionChanged(action, selection);
diff --git a/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/utils/DatePicker.java b/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/utils/DatePicker.java
deleted file mode 100644
index 63d99eed..00000000
--- a/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/utils/DatePicker.java
+++ /dev/null
@@ -1,531 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2011 Gluster, Inc. <http://www.gluster.com>
- * This file is part of Gluster Management Console.
- *
- * Gluster Management Console is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License as published
- * by the Free Software Foundation; either version 3 of the License, or
- * (at your option) any later version.
- *
- * Gluster Management Console 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 Affero General Public License
- * for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see
- * <http://www.gnu.org/licenses/>.
- *******************************************************************************/
-package com.gluster.storage.management.gui.utils;
-
-import java.text.DateFormatSymbols;
-import java.util.Calendar;
-import java.util.Date;
-
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.ControlAdapter;
-import org.eclipse.swt.events.ControlEvent;
-import org.eclipse.swt.events.KeyAdapter;
-import org.eclipse.swt.events.KeyEvent;
-import org.eclipse.swt.events.MouseAdapter;
-import org.eclipse.swt.events.MouseEvent;
-import org.eclipse.swt.events.MouseMoveListener;
-import org.eclipse.swt.events.PaintEvent;
-import org.eclipse.swt.events.PaintListener;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.events.SelectionListener;
-import org.eclipse.swt.graphics.GC;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.graphics.Rectangle;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Canvas;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.TypedListener;
-
-/**
- * The date picker panel
- *
- * changes by sebthom
- * ~ setDate will fire the Selection event
- * + you can use setDate(null) to clear the selection,
- * the calendar will display the current date, but
- * getDate will return null until the user explicitely
- * selects a date from the control
- *
- * @author <a href="mailto:andy@tiff.ru">Andrey Onistchuk</a>
- */
-public class DatePicker extends Composite {
-
- //~ Inner Classes
- // ----------------------------------------------------------
- private class DatePanel extends Canvas {
- //~ Instance fields
- // ----------------------------------------------------
- private int colSize;
- private Display display = Display.getCurrent();
- private int rowSize;
- private Calendar temp = Calendar.getInstance();
-
- //~ Constructors
- // -------------------------------------------------------
- public DatePanel(Composite parent, int style) {
- super(parent, style | SWT.NO_BACKGROUND | SWT.NO_REDRAW_RESIZE);
-
- GC gc = new GC(this);
- Point p = gc.stringExtent("Q");
- gc.dispose();
- colSize = p.x * 3;
- rowSize = (int) (p.y * 1.2);
-
- addPaintListener(new PaintListener() {
- public void paintControl(PaintEvent event) {
- onPaint(event);
- }
- });
- addControlListener(new ControlAdapter() {
- public void controlResized(ControlEvent e) {
- redraw();
- }
- });
- addKeyListener(new KeyAdapter() {
- public void keyPressed(KeyEvent e) {
- onKeyDown(e);
- }
- });
- addMouseListener(new MouseAdapter() {
- public void mouseDoubleClick(MouseEvent e) {
- doubleClick();
- }
- public void mouseDown(MouseEvent e) {
- onMouseDown(e);
- }
- });
- addMouseMoveListener(new MouseMoveListener() {
- public void mouseMove(MouseEvent e) {
- onMouseMove(e);
- }
- });
- }
-
- //~ Methods
- // ------------------------------------------------------------
- private int computeOffset(int day) {
- switch (day) {
- case Calendar.MONDAY :
- return 1;
- case Calendar.TUESDAY :
- return 2;
- case Calendar.WEDNESDAY :
- return 3;
- case Calendar.THURSDAY :
- return 4;
- case Calendar.FRIDAY :
- return 5;
- case Calendar.SATURDAY :
- return 6;
- case Calendar.SUNDAY :
- return 7;
- }
- return -1;
- }
-
- public Point computeSize(int wHint, int hHint, boolean changed) {
- return new Point(colSize * 7, rowSize * 7);
- }
-
- /**
- * Method drawTextImage.
- *
- * @param gc
- * @param string
- * @param object
- * @param i
- * @param i1
- * @param i2
- * @param colSize
- * @param rowSize
- */
- private void drawTextImage(GC gc, String string, int x, int y,
- int colSize, int rowSize) {
- gc.fillRectangle(x, y, colSize, rowSize);
- gc.drawString(string, x, y, true);
- }
-
- private int getDayFromPoint(int x, int y) {
- int result = -1;
-
- for (int i = 1; i <= 31; i++) {
- Point p = getDayPoint(i);
- Rectangle r = new Rectangle(p.x, p.y, colSize, rowSize);
- if (r.contains(x, y)) {
- result = i;
- break;
- }
- }
- return result;
- }
-
- private String getDayName(int day) {
- return dateSymbols.getShortWeekdays()[day];
- }
-
- private Point getDayPoint(int day) {
- syncTime();
- temp.set(Calendar.DAY_OF_MONTH, 1);
-
- int firstDayOffset = computeOffset(temp.get(Calendar.DAY_OF_WEEK))
- - 1;
- temp.set(Calendar.DAY_OF_MONTH, day);
- int dayOffset = computeOffset(temp.get(Calendar.DAY_OF_WEEK));
- int x = (dayOffset - 1) * colSize;
- int y = (1 + (((firstDayOffset + day) - 1) / 7)) * rowSize;
-
- return new Point(x, y);
- }
-
- private int getMaxDay() {
- syncTime();
-
- int day = 28;
-
- for (int i = 0; i < 10; i++) {
- temp.set(Calendar.DAY_OF_MONTH, day);
-
- if (temp.get(Calendar.MONTH) != cal.get(Calendar.MONTH)) {
- return day - 1;
- }
- day++;
- }
- return -1;
- }
-
- private void onKeyDown(KeyEvent e) {
- if (e.character == SWT.ESC) {
- dateSelected(false);
- return;
- }
-
- if ((e.character == ' ') || (e.character == '\r')) {
- dateSelected(true);
- return;
- }
-
- int day = cal.get(Calendar.DAY_OF_MONTH);
- int month = cal.get(Calendar.MONTH);
- int oldDay = day;
- int oldMonth = month;
-
- if (e.keyCode == SWT.ARROW_LEFT) {
- day--;
- }
-
- if (e.keyCode == SWT.ARROW_RIGHT) {
- day++;
- }
-
- if (e.keyCode == SWT.ARROW_UP) {
- day = ((day - 7) < 1 ? oldDay : day - 7);
- }
-
- if (e.keyCode == SWT.ARROW_DOWN) {
- day = ((day + 7) > getMaxDay() ? oldDay : day + 7);
- }
-
- if (e.keyCode == SWT.PAGE_UP) {
- month--;
- }
-
- if (e.keyCode == SWT.PAGE_DOWN) {
- month++;
- }
-
- cal.set(Calendar.MONTH, month);
- cal.set(Calendar.DAY_OF_MONTH, day);
-
- if ((day != oldDay) || (month != oldMonth)) {
- redraw();
-
- if (month != oldMonth) {
- updateMonthLabel();
- }
- }
- }
-
- private void onMouseDown(MouseEvent e) {
- int day = getDayFromPoint(e.x, e.y);
-
- if (day > 0) {
- cal.set(Calendar.DAY_OF_MONTH, day);
- dateSelected(true);
- updateDate();
- }
- }
-
- private void onMouseMove(MouseEvent e) {
- int day = getDayFromPoint(e.x, e.y);
- selection = day;
- updateDate();
- }
-
- private void onPaint(PaintEvent event) {
- Rectangle rect = getClientArea();
- GC gc0 = event.gc;
- Image image = new Image(display, rect.width, rect.height);
- GC gc = new GC(image);
- gc.setBackground(display
- .getSystemColor(SWT.COLOR_WIDGET_BACKGROUND));
- gc.fillRectangle(rect);
-
- int x = 0;
- int y = 0;
-
- for (int i = 0; i < 7; i++) {
- if (i == 6) {
- gc.setForeground(display.getSystemColor(SWT.COLOR_RED));
- }
- drawTextImage(gc, getDayName(1 + i), x, 0, colSize, rowSize);
- x += colSize;
- }
-
- gc.setForeground(display.getSystemColor(SWT.COLOR_BLACK));
- y += rowSize;
- gc.drawLine(0, 0, rect.width, 0);
- gc.drawLine(0, y - 1, rect.width, y - 1);
-
- syncTime();
-
- int day = 1;
-
- while (true) {
- temp.set(Calendar.DAY_OF_MONTH, day);
-
- if (temp.get(Calendar.MONTH) != cal.get(Calendar.MONTH)) {
- break;
- }
-
- int dayOffset = computeOffset(temp.get(Calendar.DAY_OF_WEEK));
- Point p = getDayPoint(day);
-
- if (day == cal.get(Calendar.DAY_OF_MONTH)) {
- gc.setForeground(display.getSystemColor(
- SWT.COLOR_LIST_SELECTION_TEXT));
- gc.setBackground(display.getSystemColor(
- SWT.COLOR_LIST_SELECTION));
- } else if (day == selection) {
- gc.setForeground(display.getSystemColor(
- SWT.COLOR_LIST_SELECTION_TEXT));
- gc.setBackground(display.getSystemColor(SWT.COLOR_BLACK));
- } else {
- gc.setBackground(display.getSystemColor(
- SWT.COLOR_WIDGET_BACKGROUND));
- gc.setForeground(display.getSystemColor(dayOffset == 7
- ? SWT.COLOR_RED
- : SWT.COLOR_BLACK));
- }
-
- drawTextImage(gc, "" + day, p.x, p.y, colSize, rowSize);
- day++;
- }
-
- gc0.drawImage(image, 0, 0);
- gc.dispose();
- image.dispose();
- }
-
- private void syncTime() {
- temp.setTimeInMillis(cal.getTimeInMillis());
- }
- }
-
- //~ Instance fields
- // --------------------------------------------------------
- private Calendar cal = Calendar.getInstance();
-
- // sebthom
- private Date selectedDate;
-
- private DatePanel datePanel;
- private DateFormatSymbols dateSymbols = new DateFormatSymbols();
- private Label monthLabel;
- private int selection = -1;
-
- //~ Constructors
- // -----------------------------------------------------------
- public DatePicker(Composite parent, int style) {
- super(parent, style);
-
- GridLayout gridLayout = new GridLayout();
- gridLayout.numColumns = 5;
- gridLayout.verticalSpacing = gridLayout.horizontalSpacing = 0;
- gridLayout.marginHeight = gridLayout.marginWidth = 0;
- setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_DARK_CYAN));
- setLayout(gridLayout);
-
- GridData gridData;
-
- // previous year
- Button prevYear = new Button(this, SWT.FLAT);
- gridData = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING);
- gridData.heightHint = gridData.widthHint = 20;
- prevYear.setLayoutData(gridData);
- prevYear.setText("<<");
- prevYear.setSelection(false);
- prevYear.addSelectionListener(new SelectionAdapter() {
- public void widgetSelected(SelectionEvent e) {
- cal.roll(Calendar.YEAR, -1);
- updateDate();
- }
- });
-
- // previous month
- Button prevMonth = new Button(this, SWT.FLAT);
- gridData = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING);
- gridData.heightHint = gridData.widthHint = 20;
- prevMonth.setLayoutData(gridData);
- prevMonth.setText("<");
- prevMonth.addSelectionListener(new SelectionAdapter() {
- public void widgetSelected(SelectionEvent e) {
- cal.roll(Calendar.MONTH, -1);
- updateDate();
- }
- });
-
- // current month
- monthLabel = new Label(this, SWT.CENTER);
- gridData = new GridData(GridData.FILL_HORIZONTAL | GridData.CENTER);
- gridData.heightHint = prevYear.computeSize(20, 20).y;
- gridData.grabExcessHorizontalSpace = true;
- monthLabel.setLayoutData(gridData);
-
- // next month
- Button nextMonth = new Button(this, SWT.FLAT);
- gridData = new GridData(GridData.HORIZONTAL_ALIGN_END);
- gridData.heightHint = gridData.widthHint = 20;
- nextMonth.setLayoutData(gridData);
- nextMonth.setText(">");
- nextMonth.addSelectionListener(new SelectionAdapter() {
- public void widgetSelected(SelectionEvent e) {
- cal.roll(Calendar.MONTH, 1);
- updateDate();
- }
- });
-
- // next year
- Button nextYear = new Button(this, SWT.FLAT);
- gridData = new GridData(GridData.HORIZONTAL_ALIGN_END);
- gridData.heightHint = gridData.widthHint = 20;
- nextYear.setLayoutData(gridData);
- nextYear.setText(">>");
- nextYear.addSelectionListener(new SelectionAdapter() {
- public void widgetSelected(SelectionEvent e) {
- cal.roll(Calendar.YEAR, 1);
- updateDate();
- }
- });
-
- // a panel
- datePanel = new DatePanel(this, SWT.NONE);
- gridData = new GridData(GridData.HORIZONTAL_ALIGN_FILL);
- gridData.horizontalSpan = 5;
- datePanel.setLayoutData(gridData);
-
- updateDate();
- }
-
- //~ Methods
- // ----------------------------------------------------------------
- public void addSelectionListener(SelectionListener listener) {
- checkWidget();
-
- if (listener == null) {
- SWT.error(SWT.ERROR_NULL_ARGUMENT);
- }
- TypedListener typedListener = new TypedListener(listener);
- addListener(SWT.Selection, typedListener);
- addListener(SWT.DefaultSelection, typedListener);
- }
-
- public Point computeSize(int wHint, int hHint, boolean changed) {
- Point pSize = datePanel.computeSize(wHint, hHint, changed);
- Point labelSize = monthLabel.computeSize(wHint, hHint, changed);
-
- int x = (pSize.x < (labelSize.x + 80) ? labelSize.x + 80 : pSize.x);
- int y = (pSize.y < (labelSize.y + 20) ? labelSize.y + 20 : pSize.y);
- return new Point(x, y);
- }
-
- private void dateSelected(boolean good) {
- // sebthom
- if (good)
- selectedDate = cal.getTime();
-
- Event event = new Event();
- event.doit = good;
- notifyListeners(SWT.Selection, event);
- }
-
- private void doubleClick() {
- Event event = new Event();
- event.doit = true;
- notifyListeners(SWT.MouseDoubleClick, event);
- }
-
- private String getCurrentMonthName() {
- StringBuffer sb = new StringBuffer();
- sb.append(getMonthName(cal.get(Calendar.MONTH)));
- sb.append(", ");
- sb.append(cal.get(Calendar.YEAR));
- return sb.toString();
- }
-
- public Date getDate() {
- // sebthom
- //return cal.getTime();
- return selectedDate;
- }
-
- private String getMonthName(int month) {
- return dateSymbols.getMonths()[month];
- }
-
- public void removeSelectionListener(SelectionListener listener) {
- checkWidget();
-
- if (listener == null) {
- SWT.error(SWT.ERROR_NULL_ARGUMENT);
- }
- removeListener(SWT.Selection, listener);
- removeListener(SWT.DefaultSelection, listener);
- }
-
- public void reset() {
- cal = Calendar.getInstance();
- updateDate();
- }
-
- public void setDate(Date date) {
- // sebthom
- //cal.setTime(date);
- selectedDate = date;
- cal.setTime(selectedDate == null ? new Date() : date);
-
- updateMonthLabel();
- redraw();
- }
-
- private void updateDate() {
- datePanel.redraw();
- updateMonthLabel();
- }
-
- private void updateMonthLabel() {
- monthLabel.setText(getCurrentMonthName());
- }
-} \ No newline at end of file
diff --git a/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/utils/DatePickerCombo.java b/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/utils/DatePickerCombo.java
deleted file mode 100644
index 91655c46..00000000
--- a/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/utils/DatePickerCombo.java
+++ /dev/null
@@ -1,1142 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2011 Gluster, Inc. <http://www.gluster.com>
- * This file is part of Gluster Management Console.
- *
- * Gluster Management Console is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License as published
- * by the Free Software Foundation; either version 3 of the License, or
- * (at your option) any later version.
- *
- * Gluster Management Console 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 Affero General Public License
- * for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see
- * <http://www.gnu.org/licenses/>.
- *******************************************************************************/
-package com.gluster.storage.management.gui.utils;
-
-import java.text.DateFormat;
-import java.text.ParseException;
-import java.text.SimpleDateFormat;
-import java.util.Date;
-
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.accessibility.ACC;
-import org.eclipse.swt.accessibility.AccessibleAdapter;
-import org.eclipse.swt.accessibility.AccessibleControlAdapter;
-import org.eclipse.swt.accessibility.AccessibleControlEvent;
-import org.eclipse.swt.accessibility.AccessibleEvent;
-import org.eclipse.swt.events.ModifyListener;
-import org.eclipse.swt.events.SelectionListener;
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.graphics.Font;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.graphics.Rectangle;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.swt.widgets.Listener;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.swt.widgets.Text;
-import org.eclipse.swt.widgets.TypedListener;
-
-/**
- * The combo widget with drop-down date-picker panel.
- *
- * changes by sebthom
- * ~ declared package accessible methods as private
- * ~ declared getEditable() as public
- * + added useSingleMouseClickToCommit behaviour
- * + manually modifying the date in the text field is reflected in the date picker
- * + setDate(null) clears the date.
- * + added getText & setText()
- *
- * @author <a href="mailto:andy@tiff.ru">Andrey Onistchuk</a>
- *
- */
-public final class DatePickerCombo extends Composite
-{
- //~ Static Methods ---------------------------------------------------------
- public static int checkStyle(int style)
- {
- int mask = SWT.BORDER | SWT.READ_ONLY | SWT.FLAT;
-
- return style & mask;
- }
-
- //~ Instance fields --------------------------------------------------------
- private Button arrow;
- private DatePicker dp;
- private boolean hasFocus;
-
- /**
- * @author sebthom
- */
- private boolean isClosePopupWithSingleMouseClick = false;
- private Shell popup;
- private Text text;
-
- //~ Constructors -----------------------------------------------------------
- public DatePickerCombo(Composite parent, int style)
- {
- super(parent, checkStyle(style));
-
- style = getStyle();
-
- int textStyle = SWT.SINGLE;
-
- if ((style & SWT.READ_ONLY) != 0)
- {
- textStyle |= SWT.READ_ONLY;
- }
-
- if ((style & SWT.FLAT) != 0)
- {
- textStyle |= SWT.FLAT;
- }
-
- text = new Text(this, textStyle);
-
- popup = new Shell(getShell(), SWT.NO_TRIM);
-
- int pickerStyle = SWT.SINGLE;
-
- if ((style & SWT.FLAT) != 0)
- {
- pickerStyle |= SWT.FLAT;
- }
-
- dp = new DatePicker(popup, pickerStyle);
-
- int arrowStyle = SWT.ARROW | SWT.DOWN;
-
- if ((style & SWT.FLAT) != 0)
- {
- arrowStyle |= SWT.FLAT;
- }
-
- arrow = new Button(this, arrowStyle);
-
- Listener listener = new Listener()
- {
- public void handleEvent(Event event)
- {
- if (popup == event.widget)
- {
- popupEvent(event);
- return;
- }
-
- if (text == event.widget)
- {
- textEvent(event);
- return;
- }
-
- if (dp == event.widget)
- {
- dpEvent(event);
- return;
- }
-
- if (arrow == event.widget)
- {
- arrowEvent(event);
- return;
- }
-
- if (DatePickerCombo.this == event.widget)
- {
- comboEvent(event);
- return;
- }
- }
- };
-
- int[] comboEvents = { SWT.Dispose, SWT.Move, SWT.Resize };
-
- for (int i = 0; i < comboEvents.length; i++)
- this.addListener(comboEvents[i], listener);
-
- int[] popupEvents = { SWT.Close, SWT.Paint, SWT.Deactivate };
-
- for (int i = 0; i < popupEvents.length; i++)
- popup.addListener(popupEvents[i], listener);
-
- int[] textEvents =
- { SWT.KeyDown, SWT.KeyUp, SWT.Modify, SWT.MouseDown, SWT.MouseUp, SWT.Traverse, SWT.FocusIn, SWT.FocusOut };
-
- for (int i = 0; i < textEvents.length; i++)
- text.addListener(textEvents[i], listener);
-
- int[] dpEvents =
- {
- SWT.MouseUp,
- SWT.MouseDoubleClick,
- SWT.Selection,
- SWT.Traverse,
- SWT.KeyDown,
- SWT.KeyUp,
- SWT.FocusIn,
- SWT.FocusOut };
-
- for (int i = 0; i < dpEvents.length; i++)
- dp.addListener(dpEvents[i], listener);
-
- int[] arrowEvents = { SWT.Selection, SWT.FocusIn, SWT.FocusOut };
-
- for (int i = 0; i < arrowEvents.length; i++)
- arrow.addListener(arrowEvents[i], listener);
-
- initAccessible();
- }
-
- //~ Methods ----------------------------------------------------------------
-
- /**
- * Adds the listener to receive events.
- *
- * @param listener
- * the listener
- *
- * @exception SWTError(ERROR_THREAD_INVALID_ACCESS)
- * when called from the wrong thread
- * @exception SWTError(ERROR_WIDGET_DISPOSED)
- * when the widget has been disposed
- * @exception SWTError(ERROR_NULL_ARGUMENT)
- * when listener is null
- */
- public void addModifyListener(ModifyListener listener)
- {
- checkWidget();
-
- if (listener == null)
- {
- SWT.error(SWT.ERROR_NULL_ARGUMENT);
- }
-
- TypedListener typedListener = new TypedListener(listener);
- addListener(SWT.Modify, typedListener);
- }
-
- /**
- * Adds the listener to receive events.
- *
- * @param listener
- * the listener
- *
- * @exception SWTError(ERROR_THREAD_INVALID_ACCESS)
- * when called from the wrong thread
- * @exception SWTError(ERROR_WIDGET_DISPOSED)
- * when the widget has been disposed
- * @exception SWTError(ERROR_NULL_ARGUMENT)
- * when listener is null
- */
- public void addSelectionListener(SelectionListener listener)
- {
- checkWidget();
-
- if (listener == null)
- {
- SWT.error(SWT.ERROR_NULL_ARGUMENT);
- }
-
- TypedListener typedListener = new TypedListener(listener);
- addListener(SWT.Selection, typedListener);
- addListener(SWT.DefaultSelection, typedListener);
- }
-
- private void arrowEvent(Event event)
- {
- switch (event.type)
- {
- case SWT.FocusIn :
- {
- if (hasFocus)
- {
- return;
- }
-
- hasFocus = true;
-
- if (getEditable())
- {
- text.selectAll();
- }
-
- Event e = new Event();
- e.time = event.time;
- notifyListeners(SWT.FocusIn, e);
- break;
- }
-
- case SWT.FocusOut :
- {
- Control focusControl = getDisplay().getFocusControl();
-
- if ((focusControl == dp) || (focusControl == text))
- {
- return;
- }
-
- hasFocus = false;
-
- Event e = new Event();
- e.time = event.time;
- notifyListeners(SWT.FocusOut, e);
- break;
- }
-
- case SWT.Selection :
- {
- dropDown(!isDropped());
- break;
- }
- }
- }
-
- /**
- * Clears the current selection.
- *
- * @exception SWTError(ERROR_THREAD_INVALID_ACCESS)
- * when called from the wrong thread
- * @exception SWTError(ERROR_WIDGET_DISPOSED)
- * when the widget has been disposed
- */
- public void clearSelection()
- {
- checkWidget();
- text.clearSelection();
- dp.reset();
- }
-
- private void comboEvent(Event event)
- {
- switch (event.type)
- {
- case SWT.Dispose :
-
- if ((popup != null) && !popup.isDisposed())
- {
- popup.dispose();
- }
-
- popup = null;
- text = null;
- dp = null;
- arrow = null;
- break;
-
- case SWT.Move :
- dropDown(false);
- break;
-
- case SWT.Resize :
- internalLayout();
- break;
- }
- }
-
- public Point computeSize(int wHint, int hHint, boolean changed)
- {
- checkWidget();
-
- int width = 0;
- int height = 0;
- Point textSize = text.computeSize(wHint, SWT.DEFAULT, changed);
- Point arrowSize = arrow.computeSize(SWT.DEFAULT, SWT.DEFAULT, changed);
- Point listSize = dp.computeSize(wHint, SWT.DEFAULT, changed);
- int borderWidth = getBorderWidth();
-
- height = Math.max(hHint, Math.max(textSize.y, arrowSize.y) + (2 * borderWidth));
- width = Math.max(wHint, Math.max(textSize.x + arrowSize.x + (2 * borderWidth), listSize.x + 2));
-
- return new Point(width, height);
- }
-
- private void dpEvent(Event event)
- {
- switch (event.type)
- {
- case SWT.FocusIn :
- {
- if (hasFocus)
- {
- return;
- }
-
- hasFocus = true;
-
- if (getEditable())
- {
- text.selectAll();
- }
-
- Event e = new Event();
- e.time = event.time;
- notifyListeners(SWT.FocusIn, e);
- break;
- }
-
- case SWT.FocusOut :
- {
- Control focusControl = getDisplay().getFocusControl();
-
- if ((focusControl == text) || (focusControl == arrow))
- {
- return;
- }
-
- hasFocus = false;
-
- Event e = new Event();
- e.time = event.time;
- notifyListeners(SWT.FocusOut, e);
- break;
- }
-
- case SWT.MouseDown :
- {
- if (event.button != 1)
- {
- return;
- }
-
- dropDown(false);
-
- Event e = new Event();
- e.time = event.time;
- notifyListeners(SWT.DefaultSelection, e);
- break;
- }
-
- case SWT.Selection :
- {
- // sebthom
- if (!isClosePopupWithSingleMouseClick)
- {
- Date date = dp.getDate();
- text.setText(DateFormat.getDateInstance().format(date));
- text.selectAll();
-
- Event e = new Event();
- e.time = event.time;
- e.stateMask = event.stateMask;
- e.doit = event.doit;
- notifyListeners(SWT.Selection, e);
- event.doit = e.doit;
-
- break;
- }
- // otherwise perform the code of SWT.MouseDoubleClick
- }
-
- case SWT.MouseDoubleClick :
- {
- dropDown(false);
-
- Date date = dp.getDate();
-
- // sebthom
- if (date == null)
- {
- text.setText("");
- }
- else
- {
- text.setText(DateFormat.getDateInstance().format(date));
- text.selectAll();
- }
-
- Event e = new Event();
- e.time = event.time;
- e.stateMask = event.stateMask;
- e.doit = event.doit;
- notifyListeners(SWT.Selection, e);
- event.doit = e.doit;
- break;
- }
-
- case SWT.Traverse :
- {
- switch (event.detail)
- {
- case SWT.TRAVERSE_TAB_NEXT :
- case SWT.TRAVERSE_RETURN :
- case SWT.TRAVERSE_ESCAPE :
- case SWT.TRAVERSE_ARROW_PREVIOUS :
- case SWT.TRAVERSE_ARROW_NEXT :
- event.doit = false;
- break;
- }
-
- Event e = new Event();
- e.time = event.time;
- e.detail = event.detail;
- e.doit = event.doit;
- e.keyCode = event.keyCode;
- notifyListeners(SWT.Traverse, e);
- event.doit = e.doit;
- break;
- }
-
- case SWT.KeyUp :
- {
- Event e = new Event();
- e.time = event.time;
- e.character = event.character;
- e.keyCode = event.keyCode;
- e.stateMask = event.stateMask;
- notifyListeners(SWT.KeyUp, e);
- break;
- }
-
- case SWT.KeyDown :
- {
- if (event.character == SWT.ESC)
- {
- // escape key cancels popup dp
- dropDown(false);
- }
-
- if ((event.character == SWT.CR) || (event.character == '\t'))
- {
- // Enter and Tab cause default selection
- dropDown(false);
-
- Event e = new Event();
- e.time = event.time;
- e.stateMask = event.stateMask;
- notifyListeners(SWT.DefaultSelection, e);
- }
-
- //At this point the widget may have been disposed.
- // If so, do not continue.
- if (isDisposed())
- {
- break;
- }
-
- Event e = new Event();
- e.time = event.time;
- e.character = event.character;
- e.keyCode = event.keyCode;
- e.stateMask = event.stateMask;
- notifyListeners(SWT.KeyDown, e);
- break;
- }
- }
- }
-
- private void dropDown(boolean drop)
- {
- if (drop == isDropped())
- {
- return;
- }
-
- if (!drop)
- {
- popup.setVisible(false);
- text.setFocus();
- return;
- }
-
- Rectangle listRect = dp.getBounds();
- Point point = getParent().toDisplay(getLocation());
- Point comboSize = getSize();
- int width = Math.max(comboSize.x, listRect.width + 2);
- popup.setBounds(point.x, point.y + comboSize.y, width, listRect.height + 2);
- popup.setVisible(true);
- dp.setFocus();
- }
-
- public Control[] getChildren()
- {
- checkWidget();
-
- return new Control[0];
- }
-
- public Date getDate()
- {
- checkWidget();
-
- return dp.getDate();
- }
-
- public boolean getEditable()
- {
- return text.getEditable();
- }
-
- /**
- * @author sebthom
- */
- public String getText()
- {
- return text.getText();
- }
-
- public void setText(String txt)
- {
- text.setText(txt);
- }
-
- public int getTextHeight()
- {
- checkWidget();
- return text.getLineHeight();
- }
-
- private void initAccessible()
- {
- getAccessible().addAccessibleListener(new AccessibleAdapter()
- {
- public void getHelp(AccessibleEvent e)
- {
- e.result = getToolTipText();
- }
- });
-
- getAccessible().addAccessibleControlListener(new AccessibleControlAdapter()
- {
- public void getChildAtPoint(AccessibleControlEvent e)
- {
- Point testPoint = toControl(new Point(e.x, e.y));
-
- if (getBounds().contains(testPoint))
- {
- e.childID = ACC.CHILDID_SELF;
- }
- }
-
- public void getChildCount(AccessibleControlEvent e)
- {
- e.detail = 0;
- }
-
- public void getLocation(AccessibleControlEvent e)
- {
- Rectangle location = getBounds();
- Point pt = toDisplay(new Point(location.x, location.y));
- e.x = pt.x;
- e.y = pt.y;
- e.width = location.width;
- e.height = location.height;
- }
-
- public void getRole(AccessibleControlEvent e)
- {
- e.detail = ACC.ROLE_COMBOBOX;
- }
-
- public void getState(AccessibleControlEvent e)
- {
- e.detail = ACC.STATE_NORMAL;
- }
-
- public void getValue(AccessibleControlEvent e)
- {
- e.result = text.getText();
- }
- });
- }
-
- private void internalLayout()
- {
- if (isDropped())
- {
- dropDown(false);
- }
-
- Rectangle rect = getClientArea();
- int width = rect.width;
- int height = rect.height;
- Point arrowSize = arrow.computeSize(SWT.DEFAULT, height);
- text.setBounds(0, 0, width - arrowSize.x, height);
- arrow.setBounds(width - arrowSize.x, 0, arrowSize.x, arrowSize.y);
-
- Point size = getSize();
- int itemHeight = dp.getBounds().height;
- Point listSize = dp.computeSize(SWT.DEFAULT, itemHeight);
- dp.setBounds(1, 1, Math.max(size.x - 2, listSize.x), listSize.y);
- }
-
- /**
- * determines if you need to double click a date in the expanded calender control to hide it
- * default is false meaning you have to double click a date
- *
- * @author sebthom
- *
- * @param useSingleMouseClickToCommit
- */
- public boolean isClosePopupWithSingleMouseClick()
- {
- return isClosePopupWithSingleMouseClick;
- }
-
- private boolean isDropped()
- {
- return popup.getVisible();
- }
-
- public boolean isFocusControl()
- {
- checkWidget();
-
- if (text.isFocusControl() || arrow.isFocusControl() || dp.isFocusControl() || popup.isFocusControl())
- {
- return true;
- }
- else
- {
- return super.isFocusControl();
- }
- }
-
- private void popupEvent(Event event)
- {
- switch (event.type)
- {
- case SWT.Paint :
-
- // draw black rectangle around dp
- Rectangle listRect = dp.getBounds();
- Color black = getDisplay().getSystemColor(SWT.COLOR_BLACK);
- event.gc.setForeground(black);
- event.gc.drawRectangle(0, 0, listRect.width + 1, listRect.height + 1);
- break;
-
- case SWT.Close :
- event.doit = false;
- dropDown(false);
- break;
-
- case SWT.Deactivate :
- dropDown(false);
- break;
- }
- }
-
- public void redraw(int x, int y, int width, int height, boolean all)
- {
- checkWidget();
-
- if (!all)
- {
- return;
- }
-
- Point location = text.getLocation();
- text.redraw(x - location.x, y - location.y, width, height, all);
- location = dp.getLocation();
- dp.redraw(x - location.x, y - location.y, width, height, all);
-
- if (arrow != null)
- {
- location = arrow.getLocation();
- arrow.redraw(x - location.x, y - location.y, width, height, all);
- }
- }
-
- /**
- * Removes the listener.
- *
- * @param listener
- * the listener
- *
- * @exception SWTError(ERROR_THREAD_INVALID_ACCESS)
- * when called from the wrong thread
- * @exception SWTError(ERROR_WIDGET_DISPOSED)
- * when the widget has been disposed
- * @exception SWTError(ERROR_NULL_ARGUMENT)
- * when listener is null
- */
- public void removeModifyListener(ModifyListener listener)
- {
- checkWidget();
-
- if (listener == null)
- {
- SWT.error(SWT.ERROR_NULL_ARGUMENT);
- }
-
- removeListener(SWT.Modify, listener);
- }
-
- /**
- * Removes the listener.
- *
- * @param listener
- * the listener
- *
- * @exception SWTError(ERROR_THREAD_INVALID_ACCESS)
- * when called from the wrong thread
- * @exception SWTError(ERROR_WIDGET_DISPOSED)
- * when the widget has been disposed
- * @exception SWTError(ERROR_NULL_ARGUMENT)
- * when listener is null
- */
- public void removeSelectionListener(SelectionListener listener)
- {
- checkWidget();
-
- if (listener == null)
- {
- SWT.error(SWT.ERROR_NULL_ARGUMENT);
- }
-
- removeListener(SWT.Selection, listener);
- removeListener(SWT.DefaultSelection, listener);
- }
-
- public void setBackground(Color color)
- {
- super.setBackground(color);
-
- if (text != null)
- {
- text.setBackground(color);
- }
-
- if (dp != null)
- {
- dp.setBackground(color);
- }
-
- if (arrow != null)
- {
- arrow.setBackground(color);
- }
- }
-
- /**
- * set if you need to double click a date in the expanded calender control to hide it
- * default is false meaning you have to double click a date
- *
- * @author sebthom
- *
- * @param useSingleMouseClickToCommit
- */
- public void setClosePopupWithSingleMouseClick(boolean isClosePopupWithSingleMouseClick)
- {
- this.isClosePopupWithSingleMouseClick = isClosePopupWithSingleMouseClick;
- }
-
- /**
- * Selects an item.
- * <p>
- * If the item at an index is not selected, it is selected. Indices that
- * are out of range are ignored. Indexing is zero based.
- *
- * @param index
- * the index of the item
- *
- * @exception SWTError(ERROR_THREAD_INVALID_ACCESS)
- * when called from the wrong thread
- * @exception SWTError(ERROR_WIDGET_DISPOSED)
- * when the widget has been disposed
- */
- public void setDate(Date date)
- {
- checkWidget();
-
- //sebthom
- if (date != null)
- {
- text.setText(DateFormat.getDateInstance().format(date));
- text.selectAll();
- }
- else
- {
- text.setText("");
- }
-
- dp.setDate(date);
- }
-
- public boolean setFocus()
- {
- checkWidget();
- return text.setFocus();
- }
-
- public void setFont(Font font)
- {
- super.setFont(font);
- text.setFont(font);
- dp.setFont(font);
- internalLayout();
- }
-
- public void setForeground(Color color)
- {
- super.setForeground(color);
-
- if (text != null)
- {
- text.setForeground(color);
- }
-
- if (dp != null)
- {
- dp.setForeground(color);
- }
-
- if (arrow != null)
- {
- arrow.setForeground(color);
- }
- }
-
- /**
- * Sets the new selection.
- *
- * @param selection
- * point representing the start and the end of the new selection
- *
- * @exception SWTError(ERROR_THREAD_INVALID_ACCESS)
- * when called from the wrong thread
- * @exception SWTError(ERROR_WIDGET_DISPOSED)
- * when the widget has been disposed
- * @exception SWTError(ERROR_NULL_ARGUMENT)
- * when selection is null
- */
- public void setSelection(Point selection)
- {
- checkWidget();
-
- if (selection == null)
- {
- SWT.error(SWT.ERROR_NULL_ARGUMENT);
- }
-
- text.setSelection(selection.x, selection.y);
- }
-
- /**
- * Sets the text limit
- *
- * @param limit
- * new text limit
- *
- * @exception SWTError(ERROR_THREAD_INVALID_ACCESS)
- * when called from the wrong thread
- * @exception SWTError(ERROR_WIDGET_DISPOSED)
- * when the widget has been disposed
- * @exception SWTError(ERROR_CANNOT_BE_ZERO)
- * when limit is 0
- */
- public void setTextLimit(int limit)
- {
- checkWidget();
- text.setTextLimit(limit);
- }
-
- public void setToolTipText(String string)
- {
- checkWidget();
- super.setToolTipText(string);
- arrow.setToolTipText(string);
- text.setToolTipText(string);
- }
-
- public void setVisible(boolean visible)
- {
- super.setVisible(visible);
-
- if (!visible)
- {
- popup.setVisible(false);
- }
- }
-
- private void textEvent(Event event)
- {
- switch (event.type)
- {
- case SWT.FocusIn :
- {
- if (hasFocus)
- {
- return;
- }
-
- hasFocus = true;
-
- if (getEditable())
- {
- text.selectAll();
- }
-
- Event e = new Event();
- e.time = event.time;
- notifyListeners(SWT.FocusIn, e);
- break;
- }
-
- case SWT.FocusOut :
- {
- Control focusControl = getDisplay().getFocusControl();
-
- if ((focusControl == dp) || (focusControl == arrow))
- {
- return;
- }
-
- hasFocus = false;
-
- Event e = new Event();
- e.time = event.time;
- notifyListeners(SWT.FocusOut, e);
- break;
- }
-
- case SWT.KeyDown :
- {
- if (event.character == SWT.ESC)
- {
- // escape key cancels popup dp
- dropDown(false);
- }
-
- if (event.character == SWT.CR)
- {
- dropDown(false);
-
- Event e = new Event();
- e.time = event.time;
- e.stateMask = event.stateMask;
- notifyListeners(SWT.DefaultSelection, e);
- }
-
- //At this point the widget may have been disposed.
- // If so, do not continue.
- if (isDisposed())
- {
- break;
- }
-
- if ((event.keyCode == SWT.ARROW_UP) || (event.keyCode == SWT.ARROW_DOWN))
- {
- //Date oldDate = getDate();
-
- //At this point the widget may have been disposed.
- // If so, do not continue.
- if (isDisposed())
- {
- break;
- }
- }
-
- // Further work : Need to add support for incremental
- // search in
- // pop up dp as characters typed in text widget
- Event e = new Event();
- e.time = event.time;
- e.character = event.character;
- e.keyCode = event.keyCode;
- e.stateMask = event.stateMask;
- notifyListeners(SWT.KeyDown, e);
- break;
- }
-
- case SWT.KeyUp :
- {
- Event e = new Event();
- e.time = event.time;
- e.character = event.character;
- e.keyCode = event.keyCode;
- e.stateMask = event.stateMask;
- notifyListeners(SWT.KeyUp, e);
- break;
- }
-
- case SWT.Modify :
- {
- // sebthom
- if (!popup.isVisible())
- {
- if (text.getText().length() == 0)
- {
- dp.setDate(null);
- }
- else
- {
- try
- {
- dp.setDate(SimpleDateFormat.getDateInstance().parse(text.getText()));
- }
- catch (ParseException pe)
- {
- dp.setDate(null);
- }
- }
- }
- // dp.deselectAll ();
- Event e = new Event();
- e.time = event.time;
- notifyListeners(SWT.Modify, e);
- break;
- }
-
- case SWT.MouseDown :
- {
- if (event.button != 1 || text.getEditable())
- {
- return;
- }
-
- boolean dropped = isDropped();
- text.selectAll();
-
- if (!dropped)
- {
- setFocus();
- }
- dropDown(!dropped);
-
- break;
- }
-
- case SWT.MouseUp :
- {
- if (event.button != 1 || text.getEditable())
- {
- return;
- }
- text.selectAll();
- break;
- }
-
- case SWT.Traverse :
- {
- switch (event.detail)
- {
- case SWT.TRAVERSE_RETURN :
- case SWT.TRAVERSE_ARROW_PREVIOUS :
- case SWT.TRAVERSE_ARROW_NEXT :
- // The enter causes default selection and
- // the arrow keys are used to manipulate the dp
- // contents so do not use them for traversal.
- event.doit = false;
- break;
- }
-
- Event e = new Event();
- e.time = event.time;
- e.detail = event.detail;
- e.doit = event.doit;
- e.keyCode = event.keyCode;
- notifyListeners(SWT.Traverse, e);
- event.doit = e.doit;
- break;
- }
- }
- }
-} \ No newline at end of file
diff --git a/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/utils/DiskViewerEditingSupport.java b/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/utils/DiskViewerEditingSupport.java
deleted file mode 100644
index cc150b39..00000000
--- a/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/utils/DiskViewerEditingSupport.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2011 Gluster, Inc. <http://www.gluster.com>
- * This file is part of Gluster Management Console.
- *
- * Gluster Management Console is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License as published
- * by the Free Software Foundation; either version 3 of the License, or
- * (at your option) any later version.
- *
- * Gluster Management Console 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 Affero General Public License
- * for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see
- * <http://www.gnu.org/licenses/>.
- *******************************************************************************/
-package com.gluster.storage.management.gui.utils;
-
-import org.eclipse.jface.viewers.CellEditor;
-import org.eclipse.jface.viewers.EditingSupport;
-import org.eclipse.jface.viewers.TableViewer;
-import org.eclipse.ui.forms.widgets.FormToolkit;
-
-import com.gluster.storage.management.core.model.Disk;
-
-public class DiskViewerEditingSupport extends EditingSupport {
- private FormToolkit toolkit;
-
- public DiskViewerEditingSupport(FormToolkit toolkit, TableViewer viewer) {
- super(viewer);
- this.toolkit = toolkit;
- }
-
- @Override
- protected CellEditor getCellEditor(Object element) {
- return new HyperlinkCellEditor(toolkit, (TableViewer)getViewer(), (Disk) element);
- }
-
- @Override
- protected boolean canEdit(Object element) {
- Disk disk = (Disk) element;
- return (disk.isUninitialized());
- }
-
- @Override
- protected Object getValue(Object element) {
- return ((Disk) element).getStatus();
- }
-
- @Override
- protected void setValue(Object element, Object value) {
- getViewer().update(element, new String[] { "status" });
- }
-
-}
diff --git a/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/utils/GUIHelper.java b/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/utils/GUIHelper.java
index d6d977a3..8957f0e6 100644
--- a/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/utils/GUIHelper.java
+++ b/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/utils/GUIHelper.java
@@ -65,6 +65,7 @@ import com.gluster.storage.management.gui.IImageKeys;
public class GUIHelper {
private static final GUIHelper instance = new GUIHelper();
+ private static final ImageUtil imageUtil = new ImageUtil();
private GUIHelper() {
@@ -134,7 +135,7 @@ public class GUIHelper {
public Composite createTab(TabFolder tabFolder, String title, String imageKey) {
TabItem item = new TabItem(tabFolder, SWT.NONE);
item.setText(title);
- item.setImage(AbstractUIPlugin.imageDescriptorFromPlugin(Application.PLUGIN_ID, imageKey).createImage());
+ item.setImage(getImage(imageKey));
Composite composite = new Composite(tabFolder, SWT.NONE);
composite.setLayout(new FillLayout());
@@ -145,11 +146,11 @@ public class GUIHelper {
}
public ImageDescriptor getImageDescriptor(String imagePath) {
- return AbstractUIPlugin.imageDescriptorFromPlugin(Application.PLUGIN_ID, imagePath);
+ return imageUtil.getImageDescriptor(imagePath);
}
public Image getImage(String imagePath) {
- return getImageDescriptor(imagePath).createImage();
+ return imageUtil.getImage(imagePath);
}
public Action createPullDownMenu(String menuName, String iconPath, final MenuManager menuManager) {
diff --git a/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/utils/HyperlinkCellEditor.java b/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/utils/HyperlinkCellEditor.java
deleted file mode 100644
index 03a94e49..00000000
--- a/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/utils/HyperlinkCellEditor.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2011 Gluster, Inc. <http://www.gluster.com>
- * This file is part of Gluster Management Console.
- *
- * Gluster Management Console is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License as published
- * by the Free Software Foundation; either version 3 of the License, or
- * (at your option) any later version.
- *
- * Gluster Management Console 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 Affero General Public License
- * for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see
- * <http://www.gnu.org/licenses/>.
- *******************************************************************************/
-package com.gluster.storage.management.gui.utils;
-
-import org.eclipse.jface.viewers.CellEditor;
-import org.eclipse.jface.viewers.TableViewer;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.ui.forms.widgets.FormToolkit;
-import org.eclipse.ui.forms.widgets.ImageHyperlink;
-
-import com.gluster.storage.management.core.model.Disk;
-
-public class HyperlinkCellEditor extends CellEditor {
- private FormToolkit toolkit;
- private Disk disk;
- private ImageHyperlink link;
- private TableViewer viewer;
-
- public HyperlinkCellEditor(FormToolkit toolkit, TableViewer viewer, Disk disk) {
- this.toolkit = toolkit;
- this.viewer = viewer;
- this.disk = disk;
- }
-
- @Override
- protected Control createControl(Composite parent) {
- link = toolkit.createImageHyperlink(viewer.getTable(), SWT.NONE);
- // link.setImage(guiHelper.getImage(IImageKeys.DISK_UNINITIALIZED));
- link.setText("Initialize");
- return link;
- }
-
- @Override
- protected Object doGetValue() {
- return disk.getStatus();
- }
-
- @Override
- protected void doSetFocus() {
- link.setFocus();
- }
-
- @Override
- protected void doSetValue(Object value) {
- if(!disk.isUninitialized()) {
- this.deactivate();
- this.dispose();
- }
- }
-}
diff --git a/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/utils/ImageUtil.java b/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/utils/ImageUtil.java
new file mode 100644
index 00000000..efa169de
--- /dev/null
+++ b/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/utils/ImageUtil.java
@@ -0,0 +1,51 @@
+/**
+ * ImageUtil.java
+ *
+ * Copyright (c) 2011 Gluster, Inc. <http://www.gluster.com>
+ * This file is part of Gluster Management Console.
+ *
+ * Gluster Management Console is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * Gluster Management Console 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 Affero General Public License
+ * for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see
+ * <http://www.gnu.org/licenses/>.
+ */
+package com.gluster.storage.management.gui.utils;
+
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+
+import com.gluster.storage.management.gui.Application;
+
+/**
+ *
+ */
+public class ImageUtil {
+ private static final LRUCache<String, Image> imageCache = new LRUCache<String, Image>(20);
+
+ public ImageDescriptor getImageDescriptor(String imagePath) {
+ return AbstractUIPlugin.imageDescriptorFromPlugin(Application.PLUGIN_ID, imagePath);
+ }
+
+ public synchronized Image getImage(String imagePath) {
+ if(imageCache.containsKey(imagePath)) {
+ return imageCache.get(imagePath);
+ }
+ return createImage(imagePath);
+ }
+
+ private Image createImage(String imagePath) {
+ Image image = getImageDescriptor(imagePath).createImage();
+ imageCache.put(imagePath, image);
+ return image;
+ }
+} \ No newline at end of file
diff --git a/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/utils/LRUCache.java b/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/utils/LRUCache.java
new file mode 100644
index 00000000..3c805ac8
--- /dev/null
+++ b/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/utils/LRUCache.java
@@ -0,0 +1,55 @@
+/**
+ * LRUCache.java
+ *
+ * Copyright (c) 2011 Gluster, Inc. <http://www.gluster.com>
+ * This file is part of Gluster Management Console.
+ *
+ * Gluster Management Console is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * Gluster Management Console 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 Affero General Public License
+ * for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see
+ * <http://www.gnu.org/licenses/>.
+ */
+package com.gluster.storage.management.gui.utils;
+
+import java.util.LinkedHashMap;
+import java.util.Map;
+
+/**
+ * An LRU cache, based on <code>LinkedHashMap</code>.
+ * <p>
+ * This cache has a fixed maximum number of elements (<code>cacheSize</code>). If the cache is full and another entry is
+ * added, the LRU (least recently used) entry is dropped.
+ *
+ */
+public class LRUCache<K, V> extends LinkedHashMap<K, V> {
+
+ private static final long serialVersionUID = 1L;
+ private static final float loadFactor = 0.75f;
+ private int cacheSize;
+
+ /**
+ * Creates a new LRU cache.
+ *
+ * @param cacheSize
+ * the maximum number of entries that will be kept in this cache.
+ */
+ public LRUCache(int cacheSize) {
+ super((int) Math.ceil(cacheSize / loadFactor) + 1, loadFactor, true);
+ this.cacheSize = cacheSize;
+ }
+
+ @Override
+ protected boolean removeEldestEntry(Map.Entry<K, V> eldest) {
+ return size() > cacheSize;
+ }
+
+}
diff --git a/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/details/DisksPage.java b/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/details/DisksPage.java
index 8f96a8ee..9ea962de 100644
--- a/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/details/DisksPage.java
+++ b/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/details/DisksPage.java
@@ -22,7 +22,6 @@ import java.util.List;
import org.eclipse.jface.layout.TableColumnLayout;
import org.eclipse.jface.viewers.ITableLabelProvider;
-import org.eclipse.jface.viewers.TableViewerColumn;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Table;
@@ -30,7 +29,6 @@ import org.eclipse.ui.IWorkbenchSite;
import com.gluster.storage.management.core.model.Disk;
import com.gluster.storage.management.gui.DiskTableLabelProvider;
-import com.gluster.storage.management.gui.utils.DiskViewerEditingSupport;
public class DisksPage extends AbstractDisksPage {
diff --git a/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/details/TabCreatorFactoryImpl.java b/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/details/TabCreatorFactoryImpl.java
index 2a28aae3..28d3d4aa 100644
--- a/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/details/TabCreatorFactoryImpl.java
+++ b/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/details/TabCreatorFactoryImpl.java
@@ -38,6 +38,7 @@ public class TabCreatorFactoryImpl implements TabCreatorFactory {
* Again, "class name" includes "entity type" in case of {@link EntityGroup} <br>
* 4) Add the newly created tab creator to the cache and return it
*/
+ @SuppressWarnings("rawtypes")
@Override
public TabCreator getTabCreator(Entity entity) {
Class entityClass = entity.getClass();
diff --git a/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/navigator/ClusterAdapterFactory.java b/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/navigator/ClusterAdapterFactory.java
index 3e4cbcb1..d7ef44ac 100644
--- a/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/navigator/ClusterAdapterFactory.java
+++ b/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/navigator/ClusterAdapterFactory.java
@@ -46,6 +46,7 @@ public class ClusterAdapterFactory implements IAdapterFactory {
return ((Entity)o).getName();
}
+ @SuppressWarnings({ "unchecked", "rawtypes" })
@Override
public ImageDescriptor getImageDescriptor(Object object) {
String iconPath = null;
@@ -81,6 +82,7 @@ public class ClusterAdapterFactory implements IAdapterFactory {
}
};
+ @SuppressWarnings("rawtypes")
@Override
public Object getAdapter(Object adaptableObject, Class adapterType) {
if (adapterType == IWorkbenchAdapter.class) {
@@ -91,6 +93,7 @@ public class ClusterAdapterFactory implements IAdapterFactory {
return null;
}
+ @SuppressWarnings("rawtypes")
@Override
public Class[] getAdapterList() {
return new Class[] { IWorkbenchAdapter.class };
diff --git a/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/navigator/NavigationTreeLabelDecorator.java b/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/navigator/NavigationTreeLabelDecorator.java
index 028b9a4b..4cdc2e66 100644
--- a/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/navigator/NavigationTreeLabelDecorator.java
+++ b/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/navigator/NavigationTreeLabelDecorator.java
@@ -49,6 +49,7 @@ public class NavigationTreeLabelDecorator implements ILightweightLabelDecorator
public void removeListener(ILabelProviderListener listener) {
}
+ @SuppressWarnings("rawtypes")
@Override
public void decorate(Object element, IDecoration decoration) {
if (element instanceof Volume) {