Java Swing Date Picker

Hi all,
can any one tell me the best date picker for my swing application, it should be very simple and work fast for my application

Hi,
Here is one more DatePicker, the usage is mentioned in the main()
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.Cursor;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.FontMetrics;
import java.awt.Graphics;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.GridLayout;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.EventObject;
import java.util.GregorianCalendar;
import java.util.LinkedList;
import javax.swing.*;
import javax.swing.border.BevelBorder;
import javax.swing.border.LineBorder;
import javax.swing.event.CellEditorListener;
import javax.swing.event.ChangeEvent;
import javax.swing.event.EventListenerList;
import javax.swing.table.AbstractTableModel;
import javax.swing.table.TableCellEditor;
import javax.swing.table.TableCellRenderer;
import javax.swing.table.TableColumn;
import javax.swing.table.TableColumnModel;
* This is a simple Calendar component written in single class. This is a
* JInternalFrame. Instantiate with public constructor and add AbstractAction
* using addAction() method and implement action performed method the,
* ActionEvent source contains the GregorianCalendar of selected Date on the
* component. Example usage is in main()
class JCalendar extends JInternalFrame {
     //Define the Button ActionCommands
     private final static String incMonth = "INC_MONTH";
     private final static String incYear = "INC_YEAR";
     private final static String incDecade = "INC_DECADE";
     private final static String decMonth = "DEC_MONTH";
     private final static String decYear = "DEC_YEAR";
     private final static String decDecade = "DEC_DECADE";
     private AbstractTableModel tableModel;
     private JTable table;
     private JScrollPane scrollPane;
     private String[] monthNames = { "JAN", "FEB", "MAR", "APR", "MAY", "JUN",
               "JUL", "AUG", "SEP", "OCT", "NOV", "DEC" };
     private String[] columnNames = { "SUN", "MON", "TUE", "WED", "THU", "FRI",
               "SAT" };
     private volatile GregorianCalendar calendar = new GregorianCalendar();
     private volatile int selectedYear = calendar.get(Calendar.YEAR);
     private volatile int selectedMonth = calendar.get(Calendar.MONTH);
     private volatile int selectedDate = calendar.get(Calendar.DATE);
     private LinkedList<Action> actionListenerList = new LinkedList<Action>();
     private JLabel status = new JLabel();
     public JCalendar() {
          super("", false, false, false, false);
          buildMonthYearGUI();
          buildGUI();
          getContentPane().add(status, BorderLayout.SOUTH);
          // setDates();
          ((javax.swing.plaf.basic.BasicInternalFrameUI) getUI())
                    .setNorthPane(null);
          setBorder(new LineBorder(Color.BLACK));
          setSize(230, 140);
     private GregorianCalendar getSelectedDate() {
          GregorianCalendar finalCalendar = new GregorianCalendar();
          finalCalendar.set(Calendar.DATE, calendar.get(Calendar.DATE));
          finalCalendar.set(Calendar.MONTH, calendar.get(Calendar.MONTH));
          finalCalendar.set(Calendar.YEAR, calendar.get(Calendar.YEAR));
          return finalCalendar;
     public void addAction(Action action) {
          actionListenerList.add(action);
     protected void buildMonthYearGUI() {
          final JLabel label = new JLabel(monthNames[selectedMonth] + " "
                    + selectedYear);
          label.setAlignmentX(JLabel.CENTER);
          label.setForeground(Color.DARK_GRAY);
          label.setBorder(new LineBorder(Color.DARK_GRAY));
          class Convenience {
               public JHyperLink buildLink(String label, String actionCmd,
                         Action listener) {
                    JHyperLink link = new JHyperLink();
                    link.setText(label);
                    listener.putValue(Action.ACTION_COMMAND_KEY, actionCmd);
                    link.addAction(listener);
                    link.setBorder(new LineBorder(Color.DARK_GRAY));
                    return link;
          }// end convenience
          Convenience convenience = new Convenience();
               class IncDecAction extends AbstractAction {
               private String getLabelText() {
                    return monthNames[selectedMonth] + " " + selectedYear;
               public void actionPerformed(ActionEvent e) {
                    String actionCmd = e.getActionCommand().trim();
                    if(actionCmd.equalsIgnoreCase(decDecade)){
                         selectedYear = selectedYear-10;
                         label.setText(getLabelText());
                    }else if(actionCmd.equalsIgnoreCase(incDecade)){
                         selectedYear = selectedYear +10;
                         label.setText(getLabelText());
                    }else if (actionCmd.equalsIgnoreCase(decYear)) {
                         selectedYear--;
                         calendar.set(Calendar.YEAR, selectedYear);
                         label.setText(getLabelText());
                    } else if (actionCmd.equalsIgnoreCase(incYear)) {
                         selectedYear++;
                         calendar.set(Calendar.YEAR, selectedYear);
                         label.setText(getLabelText());
                    } else if (actionCmd.equalsIgnoreCase(decMonth)) {
                         if (selectedMonth == Calendar.JANUARY) {
                              selectedMonth = Calendar.DECEMBER;
                              selectedYear--;
                              calendar.set(Calendar.YEAR, selectedYear);
                         } else {
                              selectedMonth--;
                         calendar.set(Calendar.MONTH, selectedMonth);
                         label.setText(getLabelText());
                    } else if (actionCmd.equalsIgnoreCase(incMonth)) {
                         if (selectedMonth == Calendar.DECEMBER) {
                              selectedMonth = Calendar.JANUARY;
                              selectedYear++;
                              calendar.set(Calendar.YEAR, selectedYear);
                         } else {
                              selectedMonth++;
                         calendar.set(Calendar.MONTH, selectedMonth);
                         label.setText(getLabelText());
                    if (tableModel != null) {
                         tableModel.fireTableStructureChanged();
                         tableModel.fireTableDataChanged();
          //AbstractAction listener = new IncDecAction();
          JHyperLink decDecButton = convenience.buildLink("<<<", decDecade, new IncDecAction());
          JHyperLink incDecButton = convenience.buildLink(">>>", incDecade, new IncDecAction());
          JHyperLink decYearButton = convenience.buildLink(" << ", decYear, new IncDecAction());
          JHyperLink incYearButton = convenience.buildLink(" >> ", incYear, new IncDecAction());
          JHyperLink decMonthButton = convenience.buildLink(" < ", decMonth, new IncDecAction());
          JHyperLink incMonthButton = convenience.buildLink(" > ", incMonth, new IncDecAction());
          JPanel monthYearPane = new JPanel();
          monthYearPane.setLayout(new GridBagLayout());
          GridBagConstraints constraints = new GridBagConstraints();
          constraints.insets = new Insets(2,2,2,2);
          constraints.gridx = 0;
          monthYearPane.add(decDecButton, constraints);
          constraints.gridx = 1;
          monthYearPane.add(decYearButton, constraints);
          constraints.gridx = 2;
          monthYearPane.add(decMonthButton, constraints);
          constraints.gridx = 3;
          constraints.weightx = 1;
          monthYearPane.add(label, constraints);
          constraints.gridx = 4;
          constraints.weightx = 0;
          monthYearPane.add(incMonthButton, constraints);
          constraints.gridx = 5;
          monthYearPane.add(incYearButton, constraints);
          constraints.gridx = 6;
          monthYearPane.add(incDecButton, constraints);
          monthYearPane.setBorder(new LineBorder(Color.GRAY));
          getContentPane().add(monthYearPane, BorderLayout.NORTH);
     protected void buildGUI() {
          tableModel = new AbstractTableModel() {
               public boolean isCellEditable(int row, int column) {
                    return true;
               public Class getColumnClass(int columnIndex) {
                    return String.class;
               @Override
               public String getColumnName(int columnIndex) {
                    return columnNames[columnIndex];
               public int getRowCount() {
                    return calendar.getActualMaximum(Calendar.WEEK_OF_MONTH);
                    // throw new UnsupportedOperationException("Not supported
                    // yet.");
               public int getColumnCount() {
                    return 7;
                    // throw new UnsupportedOperationException("Not supported
                    // yet.");
               public Object getValueAt(int rowIndex, int columnIndex) {
                    //System.out.println("Get Value method called");
                    int day_of_week = columnIndex + 1;
                    int week_of_month = rowIndex + 1;
                    GregorianCalendar localCalendar = new GregorianCalendar();
                    localCalendar.set(Calendar.MONTH, selectedMonth);
                    localCalendar.set(Calendar.YEAR, selectedYear);
                    int current_month = localCalendar.get(Calendar.MONTH);
                    localCalendar.set(Calendar.WEEK_OF_MONTH, week_of_month);
                    localCalendar.set(Calendar.DAY_OF_WEEK, day_of_week);
                    if (current_month != localCalendar.get(Calendar.MONTH))
                         return null;
                    return localCalendar.get(Calendar.DATE);
                    // throw new UnsupportedOperationException("Not supported
                    // yet.");
          class JHyperLinkRenderer extends JHyperLink implements TableCellRenderer,     TableCellEditor
               protected String plainText = "";
               public JHyperLinkRenderer() {
               private void setDate() {
                    calendar.set(Calendar.DATE, Integer.parseInt(plainText));
               public void setText(String text) {
               plainText = text;
               super.setText("<html><u>" + text + "</u></html>");
               if(plainText != null && !plainText.equalsIgnoreCase("")){
                    this.setToolTipText(new Integer(selectedMonth+1).toString()+"/"+plainText+"/"+new Integer(selectedYear).toString());
               protected void fireMouseEntered(MouseEvent me) {
                    fireActionEvent();
               protected void fireMouseExited(MouseEvent me) {
               //This is overiden to change the behavior
               protected void fireActionEvent() {
* The actionListenerList variable is defined at Global
* JCalendar Level
                    for (Action l : actionListenerList) {
                         Object source = null;
                         if (plainText != null && !plainText.equalsIgnoreCase("")) {
                              // calendar.set(Calendar.DATE, Integer.parseInt(plainText));
                              setDate();
                              source = getSelectedDate();
                         } else {
                              source = this;
                         ActionEvent e = new ActionEvent(source,
                                   ActionEvent.ACTION_PERFORMED, (String) l
                                             .getValue(Action.ACTION_COMMAND_KEY));
                         l.actionPerformed(e);
               public Component getTableCellRendererComponent(JTable table,
                         Object value, boolean isSelected, boolean hasFocus,
                         int row, int column) {
                    value = tableModel.getValueAt(row, column);
                    setText("");
                    setBorder(null);
                    setOpaque(true);
                    if (column == 0 || column == 6) {
                         setBackground(Color.LIGHT_GRAY);
                    } else {
                         setBackground(table.getBackground());
                    if (value != null) {
                         setText(value.toString());
                         this.setHorizontalAlignment(JLabel.CENTER);
                         // this.setBorder(border);
                         this.setForeground(Color.DARK_GRAY);
                         // this.setBackground(Color.RED);
                         if (isSelected) {
                              setForeground(Color.BLUE);
                              // setBorder(new LineBorder(Color.BLUE));
                              BevelBorder border = new BevelBorder(BevelBorder.RAISED);
                              setBorder(border);
                         if(value.toString().equalsIgnoreCase(new Integer(selectedDate).toString())) {
                              setBackground(Color.GREEN);
                              BevelBorder border = new BevelBorder(BevelBorder.RAISED);
                    return this;
          //Cell Editor Implementations
               public Component getTableCellEditorComponent(JTable table,
                         Object value, boolean isSelected, int row, int column) {
                    // setText("");
                    if (value != null) {
                         setText(value.toString());
                         this.setHorizontalAlignment(JLabel.CENTER);
                         setForeground(Color.BLUE);
                         BevelBorder border = new BevelBorder(BevelBorder.RAISED);
                         setBorder(border);
                    } else {
                         setText("");
                    return this;
               protected EventListenerList listenerList = new EventListenerList();
               protected ChangeEvent changeEvent = new ChangeEvent(this);
               public void addCellEditorListener(CellEditorListener listener) {
                    listenerList.add(CellEditorListener.class, listener);
               public void removeCellEditorListener(CellEditorListener listener) {
                    listenerList.remove(CellEditorListener.class, listener);
               protected void fireEditingStopped() {
                    CellEditorListener listener;
                    Object[] listeners = listenerList.getListenerList();
                    for (int i = 0; i < listeners.length; i++) {
                         if (listeners[i] == CellEditorListener.class) {
                              listener = (CellEditorListener) listeners[i + 1];
                              listener.editingStopped(changeEvent);
               protected void fireEditingCanceled() {
                    CellEditorListener listener;
                    Object[] listeners = listenerList.getListenerList();
                    for (int i = 0; i < listeners.length; i++) {
                         if (listeners[i] == CellEditorListener.class) {
                              listener = (CellEditorListener) listeners[i + 1];
                              listener.editingCanceled(changeEvent);
               public void cancelCellEditing() {
                    fireEditingCanceled();
               public boolean stopCellEditing() {
                    fireEditingStopped();
                    return true;
               public boolean isCellEditable(EventObject event) {
                    boolean flag = false;
                    if(event instanceof MouseEvent) {
                         MouseEvent evt = (MouseEvent)event;
                         if(evt.getClickCount() > 1) flag = true;
                    return flag;
               public boolean shouldSelectCell(EventObject event) {
                    return true;
               public Object getCellEditorValue() {
                    //return null;
                    return this.getText();
          JHyperLinkRenderer editorRenderer = new JHyperLinkRenderer();
          table = new JTable(tableModel);
          // Set the CellRenderer
          table.setDefaultRenderer(String.class, editorRenderer);
          table.setDefaultEditor(String.class, editorRenderer);
          table.getTableHeader().setReorderingAllowed(false);
          table.getColumnModel().setColumnMargin(5);
          table.putClientProperty("terminateEditOnFocusLost",Boolean.TRUE);
          table.setRequestFocusEnabled(false);
          table.setRowSelectionAllowed(false);
          // table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
          // table.setCellSelectionEnabled(true);
          // table.setShowGrid(false);
          scrollPane = new JScrollPane(table);
          scrollPane.setBorder(new LineBorder(Color.GRAY));
          getContentPane().add(scrollPane, BorderLayout.CENTER);
     // Local Inner JHyperLink Label class
     class JHyperLink extends JLabel {
          //This should be Strictly private
          private final LinkedList<Action> actionListenerList = new LinkedList<Action>();
          public JHyperLink() {
               super("");
               addMouseListener(new MouseAdapter() {
                    public void mouseEntered(MouseEvent me) {
                         fireMouseEntered(me);
                    public void mouseExited(MouseEvent me) {
                         fireMouseExited(me);
                         // status.removeAll();
                    public void mouseClicked(MouseEvent me) {
                         fireActionEvent();
               //setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
          protected void fireMouseEntered(MouseEvent me) {
          protected void fireMouseExited(MouseEvent me) {
          public void addAction(Action l) {
               if (!actionListenerList.contains(l)) {
                    actionListenerList.add(l);
          public void removeAction(Action l) {
               actionListenerList.remove(l);
          protected void fireActionEvent() {
               for (Action l : actionListenerList) {
                    Object source = null;
                         source = this;
                    ActionEvent e = new ActionEvent(source,
                              ActionEvent.ACTION_PERFORMED, (String) l
                                        .getValue(Action.ACTION_COMMAND_KEY));
                    l.actionPerformed(e);
     public static void main(String[] args) {
          final String calCmd = "CALENDAR_ACTION";
          final JCalendar calendar = new JCalendar();
          calendar.setVisible(true);
          calendar.setLocation(75, 75);
          AbstractAction calendarAction = new AbstractAction() {
               public void actionPerformed(ActionEvent e) {
                    if (e.getActionCommand().equalsIgnoreCase(calCmd)) {
                         if (e.getSource() != null
                                   && e.getSource() instanceof GregorianCalendar) {
                              GregorianCalendar selCal = (GregorianCalendar) e
                                        .getSource();
                              System.out.println("The Selected Date is :"
                                        + selCal.get(Calendar.MONTH) + "/"
                                        + selCal.get(Calendar.DATE) + "/"
                                        + selCal.get(Calendar.YEAR));
                              calendar.dispose();
          calendarAction.putValue(Action.ACTION_COMMAND_KEY, calCmd);
          calendar.addAction(calendarAction);
          // calendar.pack();
          JFrame frame = new JFrame();
          JDesktopPane desk = new JDesktopPane();
          frame.setContentPane(desk);
          desk.add(calendar);
          frame.setLocation(50, 50);
          frame.setSize(400, 400);
          frame.setVisible(true);
Cheers
Ram

Similar Messages

  • How to integrate a java script date picker with jsf?

    Hi I have a javascript data picker which I want to integrate with a text tield.. that is <jsf:inputtext tag...
    I know about onlclick .. but I am more interested in knowing .. how will the java script set date into that input text field.. i mean how will it recognize the field..

    Pass the input element as 'this' reference to the JS function?onclick="doSomething(this);"This has not much to do with JSF though.

  • Applet date picker

    hi
    i am having swings date picker code please convert these into java applet code
    import java.awt.Component;
    import java.awt.GridBagConstraints;
    import java.awt.GridBagLayout;
    import java.awt.Insets;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.ItemEvent;
    import java.awt.event.ItemListener;
    import java.text.DateFormatSymbols;
    import java.util.Calendar;
    import java.util.Locale;
    import javax.swing.DefaultListCellRenderer;
    import javax.swing.JCheckBox;
    import javax.swing.JComboBox;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JList;
    import javax.swing.JPanel;
    import com.standbysoft.datepicker.JDatePicker;
    public class GeneralDemo extends JPanel {
         private JDatePicker datePicker;
         public GeneralDemo() {
              datePicker = new JDatePicker();
              setLayout(new GridBagLayout());
              add(datePicker, new GridBagConstraints(0, 7, 1, 1, 0.0, 0.0, GridBagConstraints.NORTH, GridBagConstraints.HORIZONTAL, new Insets(0, 5, 5, 5), 0, 0));
         private static void createAndShowGUI() {
              JFrame frame = new JFrame("GeneralDemo");
              frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
              GeneralDemo newContentPane = new GeneralDemo();
              newContentPane.setOpaque(true); //content panes must be opaque
              frame.setContentPane(newContentPane);
              //Display the window.
              frame.pack();
              frame.setVisible(true);
         public static void main(String[] args) {
              javax.swing.SwingUtilities.invokeLater(new Runnable() {
                   public void run() {
                        createAndShowGUI();
    please help me.
    bye
    Prakash

    Hi,
    The best way would be to call a javascript function using an onchange event in the Element Attributes of the date picker. The function would then strip the components out of the date field and populate the other three fields. The example in the link below should should give you enough information to do this;
    http://htmldb.oracle.com/pls/otn/f?p=31517:162:4335067967832318::NO
    cheers,
    Ron

  • How to store the datas in a .txt file in to a JTable in Java Swing

    Hi sir,
    Here i want to know how to store the data's of a .txt file
    in to a JTable in java swing.
    Where here the .txt file like for eg,spooler.txt is in the server and from there it will come to my client machine what i have to do is to take that .txt file and store the datas of the .txt file
    in a JTable.This is what i want.So pls. do help and provide the code as well.I will be thankful.Since i am involved in a project which involves this it is Urgent.
    Thanx,
    m.ananthu

    You can't just display data from a text file in a JTable. You have you understand the structure of the data so that you can parse the data and create a table model that can access the data in a row/column format. Here is an example of a simple program that does this:
    http://forum.java.sun.com/thread.jsp?forum=57&thread=315172

  • ADF Swing 11g - How to bind date picker

    Hello,
    My Swing application needs to use date picker control, and I decided to use JCalendar from www.toedter.com.
    Is there any example on binding such Swing component? Or are there other date picker control that can easily integrate into JDev and ADF for that matter?
    Thanks
    Regards,
    Rudi

    Mmm well i don't know if this can help you
    I am using a date picker too, this is the code where I use it
    <af:selectInputDate label="#{bundle[\'newPatient.birthday\']}"
                                          required="true"
                                          requiredMessageDetail="#{bundle[\'newPatient.validate.birthday\']}"
                                          binding="#{PatientCreateBean.birthday}"/>My binding property is PatientCreateBean.birthday
    and birthday is type CoreSelectInputDate
    I got info about the different elements to use in ADF from the following link
    http://www.oracle.com/technology/products/jdev/htdocs/partners/addins/exchange/jsf/doc/tagdoc/core/imageIndex.html
    I hope this can help you

  • How to use the date picker in Web dynpro java

    Hi,
    I want to add date picker to enter a date while developing webdynpro application.
    How can i do that.
    Regards,
    H.V.Swathi

    Hi,
    its very simple...
    take a input field and map it to the attribute which data type is of "date". thats it at runtime you will see a input filed with date picker.
    i.e. Add an inputField and bind the context attribute of Type Date to it
    this will show the date picker on screen.
    PradeeP

  • Java Date Picker

    Does anyone know of a Bean or class to pick dates as in Microsoft Time/Date Picker. woulld really appreciate any help.

    Check http://www.lavantech.com/datetimepicker

  • Looking for a "free" Date Picker

    I'm looking for a free to download and use Date Picker that I can integrate into a small Swing app. Nothing fancy, just a calendar (probably using a JTable) and the ability to select a day of year/month and (possibly) a time of day.
    I'm searching google but they're all commercial licenses and I'm simply building this app as a learning process, not for profit.
    If there's nothing out there, I'll just stick with my series of combo-boxes :)
    Cheers,
    Chris

    Oh yeah, I should point out that I'm not just being lazy. I've spent a while trying to build it myself to no avail. I got as far as displaying the grid :P
    http://www.w3style.co.uk/~d11wtq/datepicker.png (out of date, the days are correct now)
    package org.w3style.calendar;
    import javax.swing.*;
    import javax.swing.table.*;
    import java.awt.*;
    public class CalendarPanel extends JPanel
         protected CalendarEventController controller = null;
         public CalendarModel model = null;
         //JComponents
         protected JComboBox monthDropdown = null;
         protected JSpinner yearDropdown = null;
         protected JTable grid = null;
         public CalendarPanel(String title)
              super(new GridBagLayout());
              this.model = new CalendarModel();
              this.controller = new CalendarEventController();
              this.controller.setUI(this);
              this.controller.setModel(this.model);
              this.setBorder(BorderFactory.createTitledBorder(title));
              GridBagConstraints c = new GridBagConstraints();
              c.gridx = 0;
              c.gridy = 0;
              c.fill = GridBagConstraints.HORIZONTAL;
              c.anchor = GridBagConstraints.WEST;
              this.addMonths(c);
              c.gridx = 1;
              c.anchor = GridBagConstraints.EAST;
              c.fill = GridBagConstraints.NONE;
              this.addYears(c);
              c.gridx = 0;
              c.gridy = 1;
              c.gridwidth = 2;
              this.addTable(c);
         protected void addMonths(GridBagConstraints c)
              String[] months = this.model.getMonths();
              if (this.monthDropdown == null)
                   this.monthDropdown = new JComboBox(months);
              int monthNow = this.model.getCurrentMonth();
              this.monthDropdown.setSelectedIndex(monthNow);
              this.model.setSelectedMonth(monthNow);
              this.controller.addMonthDropdown(this.monthDropdown);
              this.add(this.monthDropdown, c);
         public JComboBox getMonthDropdown()
              return this.monthDropdown;
         protected void addYears(GridBagConstraints c)
              this.yearDropdown = new JSpinner(this.model.getYearSpinnerModel());
              this.yearDropdown.setEditor(new JSpinner.DateEditor(this.yearDropdown, "yyyy"));
              this.add(this.yearDropdown, c);
         protected void addTable(GridBagConstraints c)
              JPanel box = new JPanel(new GridBagLayout());
              GridBagConstraints myC = new GridBagConstraints();
              myC.gridx = 0;
              myC.gridy = 0;
              this.grid = new JTable(this.model.getTableModel());
              this.configureTable();
              box.add(this.grid.getTableHeader(), myC);
              myC.gridy = 1;
              box.add(this.grid, myC);
              this.add(box, c);
         public void configureTable()
              this.grid.setDragEnabled(false);
              this.grid.getTableHeader().setReorderingAllowed(false);
              this.grid.getTableHeader().setResizingAllowed(false);
              CalendarCellRenderer renderer = new CalendarCellRenderer();
              renderer.setParentUI(this);
              TableColumn col = null;
              for (int i = 0; i < 7; i++)
                   col = this.grid.getColumnModel().getColumn(i);
                   col.setPreferredWidth(25);
                   col.setCellRenderer(renderer);
              this.grid.setSelectionBackground(new Color((float)0.7, (float)0.86, (float)1.0));
              this.grid.setSelectionForeground(Color.black);
              this.grid.setShowGrid(false);
              this.grid.setRowHeight(20);
              if (this.model.getSelectedMonth() == this.monthDropdown.getSelectedIndex())
                   int r = this.model.getSelectedGridRow();
                   this.grid.setRowSelectionInterval(r, r);
                   int c = this.model.getSelectedGridColumn();
                   this.grid.setColumnSelectionInterval(c, c);
         public JTable getGrid()
              return this.grid;
    * Manages the rendering of the cells in the calendar
    package org.w3style.calendar;
    import javax.swing.*;
    import javax.swing.table.*;
    import java.awt.*;
    import java.awt.event.*;
    * This is just a basic extension of the DefaultTableCellRender from the current L&F
    public class CalendarCellRenderer extends DefaultTableCellRenderer
          * The current row being rendered
         protected int row;
          * The current column being rendered
         protected int col;
          * If this cell is part of the "selected" row
         protected boolean isSelected;
          * The table being rendered
         protected JTable tbl;
         protected CalendarPanel parentUI = null;
         public void setParentUI(CalendarPanel p)
              this.parentUI = p;
          * Fetch the component which renders the cell ordinarily
          * @param JTable The current JTable the cell is in
          * @param Object The value in the cell
          * @param boolean If the cell is in the selected row
          * @param boolean If the cell is in focus
          * @param int The row number of the cell
          * @param int The column number of the cell
          * @return Component
         public Component getTableCellRendererComponent(JTable tbl, Object v, boolean isSelected, boolean isFocused, int row, int col)
              //Store this info for later use
              this.tbl = tbl;
              this.row = row;
              this.col = col;
              this.isSelected = isSelected;
              //and then allow the usual component to be returned
              return super.getTableCellRendererComponent(tbl, v, isSelected, isFocused, row, col);
          * Set the contents of the cell to v
          * @param Object The value to apply to the cell
         protected void setValue(Object v)
              super.setValue(v); //Set the value as requested
              //Set colors dependant upon if the row is selected or not
              if (!this.isSelected) this.setBackground(new Color((float)0.87, (float)0.91, (float)1.0));
              else this.setBackground(new Color((float)0.75, (float)0.78, (float)0.85));
              //Set a special highlight color if this actual cell is focused
              if (this.row == this.tbl.getSelectedRow() && this.col == this.tbl.getSelectedColumn())
                   this.setBackground(new Color((float)0.5, (float)0.80, (float)0.6));
                   this.parentUI.model.setSelectedMonth(this.parentUI.getMonthDropdown().getSelectedIndex());
                   this.parentUI.model.setSelectedGridRow(this.row);
                   this.parentUI.model.setSelectedGridColumn(this.col);
    package org.w3style.calendar;
    import java.util.Calendar;
    import java.util.GregorianCalendar;
    import java.util.Date;
    import javax.swing.table.DefaultTableModel;
    import javax.swing.*;
    public class CalendarModel
         protected GregorianCalendar calendar = null;
         protected Integer selectedMonth = null;
         protected Integer selectedYear = null;
         protected Integer selectedGridRow = null;
         protected Integer selectedGridColumn = null;
         String[][] days = null;
         public CalendarModel()
              this.days = new String[6][7];
              this.calendar = new GregorianCalendar();
         public GregorianCalendar getCalendar()
              return this.calendar;
         public String[] getMonths()
              String[] months = {
                   "January", "February", "March", "April", "May", "June",
                   "July", "August", "September", "October", "November", "December" };
              return months;
         public int getDaysInMonth()
              int[] daysInMonths = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
              int month = this.calendar.get(Calendar.MONTH);
              int ret = daysInMonths[month];
              if (month == 1 && this.calendar.isLeapYear(this.calendar.get(Calendar.YEAR))) ret += 1;
              return ret;
         public String[] getDayHeadings()
              String[] headings = { "S", "M", "T", "W", "T", "F", "S" };
              return headings;
         public DefaultTableModel getTableModel()
              String[] headings = this.getDayHeadings();
              Object[][] data = this.getDays();
              DefaultTableModel model = new DefaultTableModel(data, headings) {
                   public boolean isCellEditable(int row, int col)
                        return false;
              return model;
         public SpinnerDateModel getYearSpinnerModel()
              Date now = this.calendar.getTime();
              int year = this.calendar.get(Calendar.YEAR);
              this.calendar.add(Calendar.YEAR, -1000);
              Date earliest = this.calendar.getTime();
              this.calendar.add(Calendar.YEAR, 2000);
              Date latest = this.calendar.getTime();
              this.calendar.set(Calendar.YEAR, year);
              SpinnerDateModel model = new SpinnerDateModel(now, earliest, latest, Calendar.YEAR);
              return model;
         public void setSelectedGridRow(int r)
              this.selectedGridRow = r;
         public Integer getSelectedGridRow()
              return this.selectedGridRow;
         public void setSelectedGridColumn(int c)
              this.selectedGridColumn = c;
         public Integer getSelectedGridColumn()
              return this.selectedGridColumn;
         public int getSelectedMonth()
              return this.selectedMonth;
         public void setSelectedMonth(int m)
              this.selectedMonth = m;
         public String[][] getDays()
              int currDay = this.calendar.get(Calendar.DAY_OF_MONTH);
              this.calendar.set(Calendar.DAY_OF_MONTH, 1);
              int firstDayOfMonthAsDayOfWeek = this.calendar.get(Calendar.DAY_OF_WEEK);
              this.calendar.set(Calendar.DAY_OF_MONTH, currDay);
              int daysInMonth = this.getDaysInMonth();
              int row = 0;
              int key = 0;
              int dayToAdd = 0;
              for (int k = 1; k <= 42; k++)
                   if (k < firstDayOfMonthAsDayOfWeek || dayToAdd >= daysInMonth) this.days[row][key] = "";
                   else
                        dayToAdd++;
                        this.days[row][key] = ""+dayToAdd;
                        //Hack?
                        if (dayToAdd == currDay && this.getSelectedGridRow() == null && this.getSelectedGridColumn() == null)
                             this.setSelectedGridRow(row);
                             this.setSelectedGridColumn(key);
                   key++;
                   if (key == 7)
                        key = 0;
                        row++;
              return this.days;
         public int getCurrentMonth()
              int currentMonth = this.calendar.get(Calendar.MONTH);
              return currentMonth;
         public void setYear(int year)
         public void setMonth(int month)
    package org.w3style.calendar;
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    import javax.swing.table.*;
    import java.util.Calendar;
    import java.util.GregorianCalendar;
    public class CalendarEventController
         protected CalendarPanel ui = null;
         protected CalendarModel model = null;
         public CalendarEventController()
         public void setUI(CalendarPanel cal)
              this.ui = cal;
         public void setModel(CalendarModel m)
              this.model = m;
         public void addMonthDropdown(JComboBox months)
              months.addItemListener(new ItemListener() {
                   public void itemStateChanged(ItemEvent e)
                        if (e.getStateChange() == ItemEvent.SELECTED)
                             int monthSelected = ui.monthDropdown.getSelectedIndex();
                             model.getCalendar().set(Calendar.DAY_OF_MONTH, 1);
                             model.getCalendar().set(Calendar.MONTH, monthSelected);
                             //update days in table model, update ui
                             ui.getGrid().setModel(model.getTableModel());
                             ui.configureTable();
                             ui.getGrid().updateUI();
    }I could have finished it but it was just going to be a buggy mess.

  • What is difference between C# Gzip and Java swing GZIPOutputStream?

    Hi All,
    I have a Java swing tool where i can compress file inputs and we have C# tool.
    I am using GZIPOutputStream to compress the stream .
    I found the difference between C# and Java Gzip compression while a compressing a file (temp.gif ) -
    After Compression of temp.gif file in C# - compressed file size increased
    while in java i found a 2% percentage of compression of data.
    Could you please tell me , can i achieve same output in Java as compared to C# using GZIPOutputStream ?
    Thank a lot in advance.

    797957 wrote:
    Does java provides a better compression than C#?no idea, i don't do c# programming. and, your question is most likely really: "does java default to a higher compression level than c#".
    Btw what is faster compression vs. better compression?meaning, does the code spend more time/effort trying to compress the data (slower but better compression) or less time/effort trying to compress the data (faster but worse compression). most compression algorithms allow you to control this tradeoff depending on whether you care more about cpu time or disk/memory space.

  • PL/SQL and Java Swing interface

    Everybody in this forum knows that Oracle is the best database around
    with many functionalities, stability, performance, etc. We also know
    that PL/SQL is a great language to manipulate information directly
    in the database with many built in functions, OOP capability,
    transaction control, among other features. Today an application that
    manipulates information, which needs user interface, requires components
    to be developed using different technologies and normally running in
    different servers or machines. For example, the interface is done using
    a dynamic HTML generator like JSP, PHP, PL/SQL Web Toolkit, etc.
    This page is executed in an application server like Oracle iAS or
    Tomcat, just to name two, which in turn access a database like Oracle to
    build the HTML. Also rich clients like Java applets require an intermediate
    server to access the database (through servlets for example) although
    it is possible to access the database directly but with security issues.
    Another problem with this is that complexity increases a lot, many
    technologies, skills and places to maintain code which leads to a greater
    failure probability. Also, an application is constantly evolving, new
    calculations are added, new tables, changed columns. If you have an
    application with product code for example and you need to increase its
    size, you need to change it in the database, search for all occurrences
    of it in the middle-tier code and perhaps adjust interfaces. Normally
    there is no direct dependency among the tier components. On another
    issue, many application interfaces today are based on HTML which doesn't
    have interactive capabilities like rich-client interfaces. Although it
    is possible to simulate many GUI widgets with JavaScript and DHTML, it is
    far from the interactive level we can accomplish in rich clients like
    Java Swing, Flash MX, Win32, etc. HTML is also a "tag-based" language
    originally created to publish documents so even small pages require
    many bytes to be transmitted, far beyond of what we see on the screen.
    Even in fast networks you have a delay time to wait the page to be
    loaded. Another issue, the database is in general the central location
    for all kinds of data. Most applications relies on it for security,
    transaction and availability. My proposal is to use Oracle as the
    central location for interface, processing and data. With this approach
    we can create not only the data manipulation procedures in the database,
    but procedures that also control and manage user interfaces. Having
    a Oracle database as the central location for all components has many
    advantages:
    - Unique point of maintenance, backup and restore
    - Integrated database security
    - One language for everything, PL/SQL or Java (even both if desired)
    - Inherited database cache, transaction and processing optimizations
    - Direct access to the database dictionary
    - Application runs on Oracle which has support for many platforms.
    - Transparent use of parallel processing, clusters and future
    background technologies
    Regarding the interface, I already created a Java applet renderer
    which receives instructions from the database on how to create GUI
    objects and how to respond to events. The applet is only 8kb and can
    render any Swing or AWT object/event. The communication is done
    through HTTP or HTTPS using Oracles's MOD_PLSQL included in the Apache
    HTTP server which comes with the database or application server (iAS).
    I am also creating a database framework and APIs in PL/SQL to
    create and manipulate the client interface. The applet startup is
    very fast because it is very small, you don't need to download large
    classes with the client interface. Execution is done "on-demand"
    according to instructions received from the database. The instructions
    are very optimized in terms of network bandwidth and based on preliminary
    tests it can be up to 1/10 of a similar HTML screen. Less network usage
    means faster response and means that even low speed connections will
    have a good performance (a future development can be to use this in
    wireless devices like PDAs e even cell phones, just an idea for now).
    The applet can also be executed standalone by using Java Web Start.
    With this approach no business code, except the interface, is executed
    on the client. This means that alterations in the application are
    dynamically reflected in the client, no need to "re-download" the
    application. Events are transmitted when required only so network
    usage is minimized. It is also possible to establish triggering
    events to further reduce network usage. Since the protocol used is
    HTTP (which is stateless), the database framework I am creating will
    be responsible to maintain the state of connections, variables, locks
    and session information, so the developer don't need to worry about it.
    The framework will have many layers, from communication up to
    application so there will be pre-built functions to handle queries,
    pagination, lock, mail, log, etc. The final objective is to have a
    rich client application integrated into the database with minimum
    programming and maintenance requirements, not forgetting customization
    capabilities. Below is a very small example of what can de done. A
    desktop with two windows, each window with two fields, a button with an
    image to switch the values, and events to convert the typed text when
    leaving the field or double-clicking it. The "leave" event also has an
    optimization to only be triggered when the text changes. I am still
    developing the framework and adjusting the renderer but I think that all
    technical barriers were transposed by now. The framework is still in
    the early stages, my guess is that only 5% is done so far. As a future
    development even an IDE can be created so we have a graphical environment
    do develop applications. I am willing to share this with the PL/SQL
    community and listen to ideas and comments.
    Example:
    create or replace procedure demo1 (
    jre_version in varchar2 := '1.4.2_01',
    debug_info in varchar2 := 'false',
    compress_buffer in varchar2 := 'false',
    optimize_buffer in varchar2 := 'true'
    ) as
    begin
    interface.initialize('demo1_init','JGR Demo 1',jre_version,debug_info,compress_buffer,optimize_buffer);
    end;
    create or replace procedure demo1_init as
    begin
    toolkit.initialize;
    toolkit.create_icon('icon',interface.global_root_url||'img/switch.gif');
    toolkit.create_internal_frame('frame1','Frame 1',50,50,300,136);
    toolkit.create_label('frame1label1','frame1',10,10,50,20,'Field 1');
    toolkit.create_label('frame1label2','frame1',10,40,50,20,'Field 2');
    toolkit.create_text_field('frame1field1','frame1',50,10,230,20,'Field 1','Field 1',focus_event=>true,mouse_event=>true);
    toolkit.create_text_field('frame1field2','frame1',50,40,230,20,'Field 2','Field 2',focus_event=>true,mouse_event=>true);
    toolkit.set_text_field_event('frame1field1',toolkit.focus_lost_event,'demo1_set_upper',toolkit.get_text_method,'FIELD 1','false');
    toolkit.set_text_field_event('frame1field2',toolkit.focus_lost_event,'demo1_set_upper',toolkit.get_text_method,'FIELD 2','false');
    toolkit.set_text_field_event('frame1field1',toolkit.mouse_double_clicked_event,'demo1_set_lower',toolkit.get_text_method,'field 1','false');
    toolkit.set_text_field_event('frame1field2',toolkit.mouse_double_clicked_event,'demo1_set_lower',toolkit.get_text_method,'field 2','false');
    toolkit.create_button('button1','frame1',10,70,100,25,'Switch','Switch the values of "Field 1" and "Field 2"','S','icon');
    toolkit.set_button_event('button1',toolkit.action_performed_event,'demo1_switch_fields(''frame1field1'',''frame1field2'')','frame1field1:'||toolkit.get_text_method||',frame1field2:'||toolkit.get_text_method);
    toolkit.create_internal_frame('frame2','Frame 2',100,100,300,136);
    toolkit.create_label('frame2label1','frame2',10,10,50,20,'Field 1');
    toolkit.create_label('frame2label2','frame2',10,40,50,20,'Field 2');
    toolkit.create_text_field('frame2field1','frame2',50,10,230,20,'Field 1','Field 1',focus_event=>true,mouse_event=>true);
    toolkit.create_text_field('frame2field2','frame2',50,40,230,20,'Field 2','Field 2',focus_event=>true,mouse_event=>true);
    toolkit.set_text_field_event('frame2field1',toolkit.focus_lost_event,'demo1_set_upper',toolkit.get_text_method,'FIELD 1','false');
    toolkit.set_text_field_event('frame2field2',toolkit.focus_lost_event,'demo1_set_upper',toolkit.get_text_method,'FIELD 2','false');
    toolkit.set_text_field_event('frame2field1',toolkit.mouse_double_clicked_event,'demo1_set_lower',toolkit.get_text_method,'field 1','false');
    toolkit.set_text_field_event('frame2field2',toolkit.mouse_double_clicked_event,'demo1_set_lower',toolkit.get_text_method,'field 2','false');
    toolkit.create_button('button2','frame2',10,70,100,25,'Switch','Switch the values of "Field 1" and "Field 2"','S','icon');
    toolkit.set_button_event('button2',toolkit.action_performed_event,'demo1_switch_fields(''frame2field1'',''frame2field2'')','frame2field1:'||toolkit.get_text_method||',frame2field2:'||toolkit.get_text_method);
    end;
    create or replace procedure demo1_set_upper as
    begin
    toolkit.set_string_method(interface.global_object_name,toolkit.set_text_method,upper(interface.array_event_value(1)));
    toolkit.set_text_field_event(interface.global_object_name,toolkit.focus_lost_event,'demo1_set_upper',toolkit.get_text_method,upper(interface.array_event_value(1)),'false');
    end;
    create or replace procedure demo1_set_lower as
    begin
    toolkit.set_string_method(interface.global_object_name,toolkit.set_text_method,lower(interface.array_event_value(1)));
    toolkit.set_text_field_event(interface.global_object_name,toolkit.mouse_double_clicked_event,'demo1_set_lower',toolkit.get_text_method,lower(interface.array_event_value(1)),'false');
    end;
    create or replace procedure demo1_switch_fields (
    field1 in varchar2,
    field2 in varchar2
    ) as
    begin
    toolkit.set_string_method(field1,toolkit.set_text_method,interface.array_event_value(2));
    toolkit.set_string_method(field2,toolkit.set_text_method,interface.array_event_value(1));
    toolkit.set_text_field_event(field1,toolkit.focus_lost_event,'demo1_set_upper',toolkit.get_text_method,upper(interface.array_event_value(2)),'false');
    toolkit.set_text_field_event(field2,toolkit.focus_lost_event,'demo1_set_upper',toolkit.get_text_method,upper(interface.array_event_value(1)),'false');
    toolkit.set_text_field_event(field1,toolkit.mouse_double_clicked_event,'demo1_set_lower',toolkit.get_text_method,lower(interface.array_event_value(2)),'false');
    toolkit.set_text_field_event(field2,toolkit.mouse_double_clicked_event,'demo1_set_lower',toolkit.get_text_method,lower(interface.array_event_value(1)),'false');
    end;

    Is it sound like Oracle Portal?
    But you want to save a layer 9iAS.
    Basically, that was the WebDB.(Oracle changed the name to Portal when version 3.0)
    Over all, I agree with you.
    &gt;&gt;Having a Oracle database as the central location for all components has many
    &gt;&gt;advantages:
    &gt;&gt;
    &gt;&gt;- Unique point of maintenance, backup and restore
    &gt;&gt;- Integrated database security
    &gt;&gt;- One language for everything, PL/SQL or Java (even both if desired)
    &gt;&gt;- Inherited database cache, transaction and processing optimizations
    &gt;&gt;- Direct access to the database dictionary
    &gt;&gt;- Application runs on Oracle which has support for many platforms.
    &gt;&gt;- Transparent use of parallel processing, clusters and future
    &gt;&gt;background technologies
    I would like to build 'ZOPE' inside Oracle DB as a back-end
    Using Flash MX as front-end.
    Thomas Ku.

  • Problem with Date Picker and wwv_flow_item.date_popup()

    I have a Report based on the HTMLDB How-To “Build Tabular Forms for Multi-Row Operations”
    This is my code:
    select
    X.RRIT_UID,
    X.DOS,
    X.CPT_CODE,
    X.MOD,
    X.DX_CODE,
    X.CHARGES,
    X.UNITS
    from
    (select
    htmldb_item.text(1,RRIT_UID) RRIT_UID,
    wwv_flow_item.date_popup(2,null,RRIT_DATE_OF_SERVICE) DOS,
    htmldb_item.text(4,RRIT_SUBMIT_SERVICE_CODE,6) CPT_CODE,
    htmldb_item.text(5,RRIT_SUBMIT_MODIFIER,3) MOD,
    htmldb_item.text(6,RRIT_ATT_DIAG_CODE,6) DX_CODE,
    htmldb_item.text(7,RRIT_BILLED_CHARGES,9) CHARGES,
    htmldb_item.text(8,RRIT_UNITS,3) UNITS
    from
    RRIT_REPRICE_ITEM
    where
    RRRR_UID = :P5_RRRR_UID
    union all
    select
    htmldb_item.text(1,null) RRIT_UID,
    wwv_flow_item.date_popup(2,null,null) DOS,
    htmldb_item.text(4,null,6) CPT_CODE,
    htmldb_item.text(5,null,3) MOD,
    htmldb_item.text(6,null,6) DX_CODE,
    htmldb_item.text(7,null,9) CHARGES,
    htmldb_item.text(8,null,3) UNITS
    from
    dual)
    X
    My problem is when I run the page and select a date from the Pop-Up calendar I get this error:
    Line 10
    Error: ‘opener.document.forms.0.f02.0’ is null or not an object
    I know it is something to do with data formats and the fact that I do not fully understand the use of wwv_flow_item.date_popup().

    Hi DK,
    It is a WD Java application, Backend is ABAP (MM module).
    The UI is input field, where the context attribute type is Date, So its been changed to Date Picker.
    The problem is when the user runs the WD application in Portal, The calendar format is being changed for some users. That is for few users the Week starts with Monday and for few users the week starts with Sunday.
    I need all the users to have Monday as the First day of the week.
    Please let me know, what will be solution for this.
    Since I haven't done anything in regard to date, it is a simple Date format.
    Thanks & Regards,
    Palani

  • Date picker not working correctly.

    Hi all,
    I have a strange prob in webdynpro.
    I am using Date picker. But once i read it, the value is one day less than that i give.
    For eg, i give <b>06/25/2006</b>.. but it reads as <b>06/24/2006</b>.
    Please help.
    Thanks in advance
    gEorgE

    Open an OSS message (BC-WD-JAV-RUN).
    Armin

  • Date picker for af:inputDate   is not picking up the correct input date

    view source:
    <af:inputDate value="#{bindings.DateField.attributeValue}" label="#{bindings.DateField.hints.label}"
    required="#{bindings.DateField.hints.mandatory}"
    valueChangeListener="#{pageFlowScope.CollectApplicantInformation.datesItemChanged}"
    columns="#{bindings.DateField.hints.displayWidth}" shortDesc="#{CustomTooltip[DateField]}"
    autoSubmit="true" helpTopicId="AppDt" id="DateField" simple="true">
    <f:validator binding="#{bindings.DateField.validator}"/>
    *<f:converter converterId="CustomConverter"/>*
    </af:inputDate>
    Here I am not using <af:ConvertDateTime> insted using customConverter, so what code changes do I need to make sure the date picker always picks the already existind date in the inputDate rather picking the current date?
    Here is my CustomConverter.java
    CustomConverter.java
    public class CustomConverter extends DateTimeConverter implements ClientConverter, Converter
    public Object getAsObject(FacesContext context, UIComponent component, String value)
    String dataType = (String) resolveExpression("#{bindings." + component.getId() + ".attributeDef.javaType.name}");
    if (dataType != null && !dataType.equalsIgnoreCase("oracle.jbo.domain.Date") && !dataType.equalsIgnoreCase("oracle.jbo.domain.Timestamp"))
    String test = null;
    if (context == null || component == null)
    throw new NullPointerException();
    if (value != null)
    // To solve DB transaction dirty issue, Check isEmpty and return null.
    if (value.isEmpty())
    return null;
    // the "value" is stored on the value property of the component.
    // The Unified EL allows us to check the type
    ValueExpression expression = component.getValueExpression("value");
    if (expression != null)
    Class<?> expectedType = expression.getType(context.getELContext());
    if (expectedType != null)
    System.out.println("expectedType Value:::" + expectedType.getName());
    // try to convert the value (Object) to the TYPE of the "value" property
    // of the underlying JSF component
    try
    return TypeFactory.getInstance(expectedType, value);
    catch (DataCreationException e)
    String errorMessage;
    if (expectedType.equals(CustomNumber.class))
    errorMessage = "You can enter only Numbers in this field";
    else
    errorMessage = e.getMessage();
    if (errorMessage != null)
    FacesContext ctx = FacesContext.getCurrentInstance();
    FacesMessage fm = new FacesMessage(FacesMessage.SEVERITY_ERROR, "Invalid Format" , errorMessage);
    ctx.addMessage(component.getClientId(), fm);
    catch (CustomDomainException e)
    int errorCode = e.getErrorMessageCode();
    String[] errorMessage = e.getErrorMessageParams();
    if (errorCode == 7 && errorMessage != null)
    String msg = "Invalid " + errorMessage[0];
    FacesContext ctx = FacesContext.getCurrentInstance();
    FacesMessage fm = new FacesMessage(FacesMessage.SEVERITY_ERROR, "Application Error: ", msg);
    ctx.addMessage(component.getClientId(), fm);
    catch (JboException e)
    Throwable cause = e.getCause();
    if (cause == null)
    cause = e;
    test = "not good format";
    throw e;
    return null;
    else
    return value != null? value: null;
    public String getAsString(FacesContext context, UIComponent component, Object value)
    return value != null? value.toString(): null;
    public String getClientLibrarySource(FacesContext context)
    return null;
    @Override
    public Collection<String> getClientImportNames()
    return Collections.emptySet();
    @Override
    public String getClientScript(FacesContext context, UIComponent component)
    String formatMask = (String) resolveExpression("#{bindings." + component.getId() + ".format}");
    if (formatMask != null)
    String dataType = (String) resolveExpression("#{bindings." + component.getId() + ".attributeDef.javaType.name}");
    if (dataType.equalsIgnoreCase("oracle.jbo.domain.Date") || dataType.equalsIgnoreCase("oracle.jbo.domain.Timestamp"))
    if (component == null)
    _LOG.severe("The component is null, but it is needed for the client id, so no script written");
    return null;
    // Add a JavaScript Object to store the datefield formats
    // on the client-side. We currently store the format string
    // for each and every field. It'd be more efficient to have
    // an array of formats, then store for each field the
    // index of the format, especially if we could delay outputting
    // these objects to when the <form> closes.
    String clientId = component.getClientId(context);
    if (clientId != null)
    // =-=AEW Only if Javascript...
    Map<String, Object> requestMap = context.getExternalContext().getRequestMap();
    // this fetch could be at the place where we append, but has been
    // moved ahead to optimize use of StringBuilder
    String jsPattern = getJSPattern(context, component);
    String loc = _getLocaleString(context);
    // FIX - figure out size!!!
    // 127 chars for javascript + length of jspattern + locale + 12 chars for
    // tranforming to name in the worst case.
    StringBuilder buff = new StringBuilder(139 + jsPattern.length() + loc.length());
    if (requestMap.get(_PATTERN_WRITTEN_KEY) == null)
    requestMap.put(_PATTERN_WRITTEN_KEY, Boolean.TRUE);
    // only create the _dfs object if it doesn't exist, so we don't
    // wipe out _dfs[xxx] values if we ppr the first date field on a
    // page with multiple date fields.
    buff.append("if(window['_dfs'] == undefined){var _dfs=new Object();}if(window['_dl'] == undefined){var _dl=new Object();}");
    buff.append("_dfs[\"");
    buff.append(clientId);
    buff.append("\"]=");
    buff.append(jsPattern);
    buff.append(";");
    buff.append("_dl[\"");
    buff.append(clientId);
    buff.append("\"]=");
    buff.append(loc);
    buff.append(";");
    return buff.toString();
    else
    LOG.severe("NULLCLINET_ID_NO_SCRIPT_RENDERED");
    return null;
    else
    return null;
    else
    return null;
    private String _getLocaleString(FacesContext context)
    Locale dateTimeConverterLocale = getLocale();
    if (dateTimeConverterLocale != null)
    Locale defaultLocale = RenderingContext.getCurrentInstance().getLocaleContext().getFormattingLocale();
    if (!(dateTimeConverterLocale.equals(defaultLocale)))
    String loc = dateTimeConverterLocale.toString();
    StringBuffer sb = new StringBuffer(2 + loc.length());
    sb.append("'");
    sb.append(loc);
    sb.append("'");
    return (sb.toString());
    return "null";
    @Override
    @Deprecated
    public String getClientConversion(FacesContext context, UIComponent component)
    String formatMask = (String) resolveExpression("#{bindings." + component.getId() + ".format}");
    if (formatMask != null)
    String dataType = (String) resolveExpression("#{bindings." + component.getId() + ".attributeDef.javaType.name}");
    if (dataType.equalsIgnoreCase("oracle.jbo.domain.Date") || dataType.equalsIgnoreCase("oracle.jbo.domain.Timestamp"))
    String jsPattern = getJSPattern(context, component);
    Map<String, String> messages = new HashMap<String, String>();
    if (jsPattern != null)
    Class<?> formatclass = formatMask.getClass();
    System.out.println("FormatClass::" + formatclass);
    System.out.println(" Format Mask : " + formatMask);
    // SimpleDateFormat sdfDestination = new SimpleDateFormat(formatMask);
    String pattern = formatMask; //getPattern();
    if (pattern == null)
    pattern = getSecondaryPattern();
    String key = getViolationMessageKey(pattern);
    Object[] params = new Object[]
    { "{0}", "{1}", "{2}" };
    Object msgPattern = getMessagePattern(context, key, params, component);
    //if hintFormat is null, no custom hint for date, time or both has been specified
    String hintFormat = _getHint();
    FacesMessage msg = null;
    String detailMessage = null;
    if (msgPattern != null)
    msg = MessageFactory.getMessage(context, key, msgPattern, params, component);
    detailMessage = XhtmlLafUtils.escapeJS(msg.getDetail());
    Locale loc = context.getViewRoot().getLocale();
    SimpleDateFormat formatter = new SimpleDateFormat(pattern, loc);
    java.lang.Object obj = resolveExpression("#{bindings." + component.getId() + ".attributeValue}");
    String databaseDate=null;
    if(obj!=null)
    databaseDate = obj.toString();
    DateFormat df = new SimpleDateFormat(pattern,loc);
    System.out.println("DateComponent input value :::::::::::::::::::::::::"+databaseDate);
    Date today;
    try {
    // System.out.println("Before Conversion::::::::::::"+df.parse(databaseDate).toString());
    if(databaseDate!=null)
    today = df.parse(databaseDate);
    else
    today = new Date();
    System.out.println("After Conversion Date :::::::::::::::::::::::::::::"+today.toString());
    //Date today = new Date();
    String dt = formatter.format(today);
    String exampleString = dt;
    String escapedType = XhtmlLafUtils.escapeJS(getType().toUpperCase());
    StringBuilder outBuffer = new StringBuilder();
    outBuffer.append("new TrDateTimeConverter(");
    outBuffer.append(jsPattern);
    // loc = getLocale();
    if (loc != null)
    outBuffer.append(",'");
    outBuffer.append(loc.toString());
    outBuffer.append("','");
    else
    outBuffer.append(",null,'");
    outBuffer.append(exampleString);
    outBuffer.append("','");
    outBuffer.append(escapedType);
    outBuffer.append("'");
    if (msgPattern != null || hintFormat != null)
    messages.put("detail", detailMessage);
    messages.put("hint", hintFormat);
    outBuffer.append(',');
    // try
    // JsonUtils.writeMap(outBuffer, messages, false);
    // catch (IOException e)
    // outBuffer.append("null");
    outBuffer.append(')'); // 2
    return outBuffer.toString();
    catch(ParseException e)
    System.out.println("Parse Exception :::::::::::::::::::::"+e);
    return null;
    else
    // no pattern-matchable date
    return null;
    else
    return null;
    else
    return null;
    protected String getJSPattern(FacesContext context, UIComponent component)
    String jsPattern = null;
    String datePattern = (String) resolveExpression("#{bindings." + component.getId() + ".format}");
    if (datePattern != null)
    String secondaryPattern = getSecondaryPattern();
    if (datePattern != _NO_JS_PATTERN)
    int length = datePattern.length() * 2 + 2;
    if (secondaryPattern != null)
    length = length + 3 + secondaryPattern.length() * 2;
    StringBuilder outBuffer = new StringBuilder(length);
    jsPattern = _getEscapedPattern(outBuffer, datePattern, secondaryPattern);
    else
    jsPattern = datePattern;
    return jsPattern;
    private static void _escapePattern(StringBuilder buffer, String pattern)
    buffer.append('\'');
    XhtmlUtils.escapeJS(buffer, pattern);
    buffer.append('\'');
    private static String _getEscapedPattern(StringBuilder buffer, String pattern, String secondaryPattern)
    if (secondaryPattern != null)
    buffer.append('[');
    _escapePattern(buffer, pattern);
    if (secondaryPattern != null)
    buffer.append(",'");
    XhtmlUtils.escapeJS(buffer, secondaryPattern);
    buffer.append("']");
    return buffer.toString();
    private String _getHint()
    String type = getType();
    if (type.equals("date"))
    return getHintDate();
    else if (type.equals("both"))
    return getHintBoth();
    else
    return getHintTime();
    public static Object resolveExpression(String pExpression)
    FacesContext facesContext = FacesContext.getCurrentInstance();
    Application app = facesContext.getApplication();
    ExpressionFactory elFactory = app.getExpressionFactory();
    ELContext elContext = facesContext.getELContext();
    ValueExpression valueExp = null;
    valueExp = elFactory.createValueExpression(elContext, pExpression, Object.class);
    return valueExp.getValue(elContext);
    private static final String _NO_JS_PATTERN = new String();
    private static final TrinidadLogger _LOG = TrinidadLogger.createTrinidadLogger(DateTimeConverter.class);
    // RenderingContext key indicating the _dateFormat object
    // has been created
    private static final String _PATTERN_WRITTEN_KEY = "org.apache.myfaces.trinidadinternal.convert.DateTimeConverter._PATTERN_WRITTEN";
    *Problem is if any input date componet is displaying other than current date then the date picker is always picking the current date rather existing date*
    Please suggest me where to make changes?
    Edited by: 858782 on Oct 3, 2011 7:43 AM
    Edited by: 858782 on Oct 3, 2011 11:44 PM

    I need custom date foramts to be applied for different inputDates which are not defined in <af:convertDateTime>
    Thanks
    Edited by: 858782 on Oct 13, 2011 4:59 PM

  • Loading large files in Java Swing GUI

    Hello Everyone!
    I am trying to load large files(more then 70 MB of xml text) in a Java Swing GUI. I tried several approaches,
    1)Byte based loading whith a loop similar to
    pane.setText("");
                 InputStream file_reader = new BufferedInputStream(new FileInputStream
                           (file));
                 int BUFFER_SIZE = 4096;
                 byte[] buffer = new byte[BUFFER_SIZE];
                 int bytesRead;
                 String line;
                 while ((bytesRead = file_reader.read(buffer, 0, BUFFER_SIZE)) != -1)
                      line = new String(buffer, 0, bytesRead);
                      pane.append(line);
                 }But this is gives me unacceptable response times for large files and runs out of Java Heap memory.
    2) I read in several places that I could load only small chunks of the file at a time and when the user scrolls upwards or downwards the next/previous chunk is loaded , to achieve this I am guessing extensive manipulation for the ScrollBar in the JScrollPane will be needed or adding an external JScrollBar perhaps? Can anyone provide sample code for that approach? (Putting in mind that I am writting code for an editor so I will be needing to interact via clicks and mouse wheel roatation and keyboard buttons and so on...)
    If anyone can help me, post sample code or point me to useful links that deal with this issue or with writting code for editors in general I would be very grateful.
    Thank you in advance.

    Hi,
    I'm replying to your question from another thread.
    To handle large files I used the new IO libary. I'm trying to remember off the top of my head but the classes involved were the RandomAccessFile, FileChannel and MappedByteBuffer. The MappedByteBuffer was the best way for me to read and write to the file.
    When opening the file I had to scan through the contents of the file using a swing worker thread and progress monitor. Whilst doing this I indexed the file into managable chunks. I also created a cache to further optimise file access.
    In all it worked really well and I was suprised by the performance of the new IO libraries. I remember loading 1GB files and whilst having to wait a few seconds to perform the indexing you wouldn't know that the data for the JList was being retrieved from a file whilst the application was running.
    Good Luck,
    Martin.

  • How to validate a date in date picker

    Dear All,
    ADF BC and ADF faces page, in the page there is a date picker field where i need to apply validation(i.e. select date is greater than the sysdate), i added a validation in the entity object on the corresponding field, using a compare validator, operator: Less Than, compare with: Query Result, sql statement: select sysdate from dual
    when the page is commited, i got the following errors, anybody any idea? thank you!
    07/09/03 18:18:32 [584] oracle.jbo.common.JboAssert: (Assertion Failed)
         at oracle.jbo.common.Diagnostic.ASSERT(Diagnostic.java:303)
         at oracle.jbo.common.Diagnostic.ASSERT(Diagnostic.java:338)
         at oracle.jbo.server.util.Variant.compareTo(Variant.java:1225)
         at oracle.jbo.server.rules.JboCompareValidator.validateValue(JboCompareValidator.java:171)
    07/09/03 18:18:32 [585] *** Using bean introspection to lookup value :currentRowIndexInRange
    03-sep 18:18:32 DEBUG (JhsPageLifecycle) -executing processModelUpdaters
    03-sep 18:18:32 DEBUG (JhsCollectionModel) -DocumentsCollectionModel: Executing processNewRows
    03-sep 18:18:32 DEBUG (JhsCollectionModel) -DocumentsCollectionModel: DocumentsTable new row 0 ignored, no attributes updated.
    03-sep 18:18:32 DEBUG (JhsPageLifecycle) -executing validateModelUpdates
    03-sep 18:18:32 DEBUG (JhsPageLifecycle) -executing onCommit
    07/09/03 18:18:32 [586] DCBindingContainer.reportException :oracle.jbo.TxnValException
    07/09/03 18:18:32 [587] oracle.jbo.TxnValException: JBO-27023: Valideren van alle rijen in een transactie is mislukt.
         at oracle.jbo.server.DBTransactionImpl.validate(DBTransactionImpl.java:4051)
         at oracle.jbo.server.DBTransactionImpl.commitInternal(DBTransactionImpl.java:1921)
    ## Detail 0 ##
    oracle.jbo.RowValException: JBO-27024: Valideren van rij met sleutel oracle.jbo.Key[382 ] van type Benchmarks is mislukt.
         at oracle.jbo.server.EntityImpl.validate(EntityImpl.java:1597)
         at oracle.jbo.server.DBTransactionImpl.validate(DBTransactionImpl.java:4031)
    ## Detail 0 ##
    oracle.jbo.AttrValException: JBO-27025: Valideren van attribuut EstimatedComplDate met waarde 2007-08-11 is mislukt.
         at oracle.jbo.server.AttributeDefImpl.validate(AttributeDefImpl.java:1954)
         at oracle.jbo.server.AttributeDefImpl.set(AttributeDefImpl.java:1866)
    P.S. some of the message are displayed in Dutch
    Message was edited by:
    Jerry Yang

    But first setLenient(false), because to my mind
    DateFormat it apt to be far too lenient
    tending to accept things like 30 Feb.A web banking application had setLenient(false). Customers would call support because they got an error message when they tried to get transaction statements for the whole month by entering April 1 - April 31.
    We changed to setLenient(true). Consider which leniency mode is right for you. And write better error messages than what we had...
    Maybe: if non-lenient fails, parse with lenient; if that succeeds, give a specific error message explaining the situation (or execute with the lenient date, and present results with a warning message "we made a guess at what you meant, check results").

Maybe you are looking for

  • Navigate to a Website from Infoview

    HI, Could someone tell me how can i, navigate to a such website from a Infoview Document. The only requisite that i have for this: the website must be open inside Infoview, aslike is showed in Crystal Reports Samples when business object site is open

  • Can you export a Quick Time REFERENCE file from Final Cut Pro X?

    Used to be in FCP-7, you could export your timeline and at the bottom of the Export dialog box, there was a check box where you could check "Make the movie self-contained," which would export a full Quick Time .mov file, or you could UNCHECK that box

  • Problem to check for updates

    I upgraded my iPhone 4 and my iPad 2 to iOS 5 some days ago. Now I have the following error when I try to check for software updates from iTunes 10.5 on my iMac - "iTunes could not check for an update to the carrier setting for your iPhone. An unknow

  • Please help, constant video hardware error !

    Please help, I can't find the problem. Am on windows 8 for a while now and I check my event viewer from time to time and I found several error massages that exists in my event viewer and the latest was while watching a movie on windows media player h

  • P2 gen.spool; how to call it several times from P1 in Job and look spools ?

    Hi I have a Program 2  wich generates a report (list). If i create a Job (SM36) with this Program 2, the Job generates the corresponding spool. I have other Program 1 wich call several times the Program 2, but if i create a Job with this Program 1, t