/******************************************************************************* * Copyright (c) 2013 Luigi Sgro. All rights reserved. This * program and the accompanying materials are made available under the terms of * the Eclipse Public License v1.0 which accompanies this distribution, and is * available at http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Luigi Sgro - initial API and implementation ******************************************************************************/ package com.quantcomponents.ui.marketdata; import java.text.DecimalFormat; import java.text.NumberFormat; import java.util.Calendar; import org.eclipse.swt.SWT; import org.eclipse.swt.events.SelectionListener; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Combo; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Label; public class DateCombo extends Composite { private static final int NO_YEARS = 10; private Label dayLabel; private Combo dayEdit; private Label monthLabel; private Combo monthEdit; private Label yearLabel; private Combo yearEdit; private int startYear; public DateCombo(Composite parent, int style) { super(parent, style); createControls(); } @Override public void setEnabled(boolean enabled) { super.setEnabled(enabled); dayLabel.setEnabled(enabled); dayEdit.setEnabled(enabled); monthLabel.setEnabled(enabled); monthEdit.setEnabled(enabled); yearLabel.setEnabled(enabled); yearEdit.setEnabled(enabled); } public int getDay() { int selectedIndex = dayEdit.getSelectionIndex(); if (selectedIndex > -1) selectedIndex++; return selectedIndex; } public int getMonth() { int selectedIndex = monthEdit.getSelectionIndex(); if (selectedIndex > -1) selectedIndex++; return selectedIndex; } public int getYear() { int selectedIndex = yearEdit.getSelectionIndex(); if (selectedIndex > -1) selectedIndex += startYear; return selectedIndex; } public void addSelectionListener(SelectionListener listener) { dayEdit.addSelectionListener(listener); monthEdit.addSelectionListener(listener); yearEdit.addSelectionListener(listener); } public void removeSelectionListener(SelectionListener listener) { dayEdit.removeSelectionListener(listener); monthEdit.removeSelectionListener(listener); yearEdit.removeSelectionListener(listener); } private String[] calculateYears() { NumberFormat nfYear = new DecimalFormat("0000"); String[] years = new String[NO_YEARS]; Calendar calendar = Calendar.getInstance(); startYear = calendar.get(Calendar.YEAR); for (int i = 0; i < NO_YEARS; i++) { years[i] = nfYear.format(startYear + i); } return years; } private void createControls() { GridLayout layout = new GridLayout(); layout.numColumns = 6; setLayout(layout); dayLabel = new Label(this, SWT.NULL); dayLabel.setText("d"); dayEdit = new Combo(this, SWT.READ_ONLY); dayEdit.setItems(new String[] {"01","02","03","04","05","06","07","08","09","10", "11","12","13","14","15","16","17","18","19","20", "21","22","23","24","25","26","27","28","29","30","31"}); monthLabel = new Label(this, SWT.NULL); monthLabel.setText("m"); monthEdit = new Combo(this, SWT.READ_ONLY); monthEdit.setItems(new String[] {"01","02","03","04","05","06","07","08","09","10","11","12"}); yearLabel = new Label(this, SWT.NULL); yearLabel.setText("y"); yearEdit = new Combo(this, SWT.READ_ONLY); yearEdit.setItems(calculateYears()); } }