Example usage for com.jgoodies.forms.layout Sizes DLUX2

List of usage examples for com.jgoodies.forms.layout Sizes DLUX2

Introduction

In this page you can find the example usage for com.jgoodies.forms.layout Sizes DLUX2.

Prototype

ConstantSize DLUX2

To view the source code for com.jgoodies.forms.layout Sizes DLUX2.

Click Source Link

Usage

From source file:se.streamsource.streamflow.client.ui.workspace.cases.caselog.CaseLogView.java

License:Apache License

public CaseLogView(@Service final ApplicationContext context, @Uses CaseLogModel logmodel) {
    this.model = logmodel;

    setActionMap(context.getActionMap(this));

    // Load icons
    notPublishedIcon = icon(Icons.not_published, ICON_16);
    publishedIcon = icon(Icons.published, ICON_16);

    // Layout and form for the left panel
    FormLayout rightLayout = new FormLayout("30dlu, 300:grow, 50dlu, 20dlu", "pref, fill:pref:grow, 60dlu");
    setLayout(rightLayout);/*w  ww.  ja  v a 2 s .c om*/
    setFocusable(false);
    DefaultFormBuilder rightBuilder = new DefaultFormBuilder(rightLayout, this);
    rightBuilder.setBorder(Borders.createEmptyBorder(Sizes.DLUY2, Sizes.DLUX2, Sizes.DLUY2, Sizes.DLUX2));

    JLabel caseLogLabel = new JLabel(i18n.text(WorkspaceResources.case_log));
    rightBuilder.add(caseLogLabel,
            new CellConstraints(1, 1, 2, 1, CellConstraints.LEFT, CellConstraints.TOP, new Insets(0, 0, 0, 0)));
    rightBuilder.nextColumn();

    filtersList = new SelectionList(
            Arrays.asList(system.name(), system_trace.name(), custom.name(), contact.name(), form.name(),
                    conversation.name(), attachment.name()),
            model.getSelectedFilters(), new ValueToLabelConverter() {
                public String convert(String value) {
                    return text(valueOf(value.toString()));
                }
            }, new ListSelectionListener() {

                public void valueChanged(ListSelectionEvent event) {
                    if (!event.getValueIsAdjusting()) {
                        String selectedValue = (String) ((JList) event.getSource()).getSelectedValue();
                        if (selectedValue != null) {
                            if (model.getSelectedFilters().contains(selectedValue)) {
                                model.getSelectedFilters().remove(selectedValue);
                            } else {
                                model.getSelectedFilters().add(selectedValue);
                            }
                            model.refresh();
                            ((JList) event.getSource()).clearSelection();
                        }
                    }
                }
            });

    filterPopupHandler = new StandardPopupHandler(CaseLogView.this, getActionMap().get("filter"),
            Position.right, false, new RefreshHandler() {
                public void refresh() {
                    model.refresh();
                    list.ensureIndexIsVisible(list.getModel().getSize() - 1);
                }
            });
    rightBuilder.add(filterPopupHandler.getButton(), new CellConstraints(3, 1, 1, 1, CellConstraints.RIGHT,
            CellConstraints.TOP, new Insets(0, 0, 0, 0)));

    filtersList.addFocusListener(new FocusAdapter() {
        @Override
        public void focusLost(FocusEvent e) {
            if (e.getOppositeComponent() != null
                    && (e.getOppositeComponent().equals(filterPopupHandler.getButton())))
                filterPopupHandler.kill();
        }
    });

    editButton = new StreamflowToggleButton(getActionMap().get("edit"));
    editButton.setMargin(new Insets(3, 7, 1, 5));
    rightBuilder.add(editButton, new CellConstraints(4, 1, 1, 1, CellConstraints.RIGHT, CellConstraints.TOP,
            new Insets(0, 0, 0, 0)));

    // Caselog
    rightBuilder.nextLine();
    ((JXList) list).addHighlighter(HighlighterFactory.createAlternateStriping());
    list.setModel(new EventListModel<CaseLogEntryDTO>(model.caselogs()));
    list.setCellRenderer(new CaseLogListCellRenderer());
    list.setFixedCellHeight(-1);
    list.getSelectionModel().setSelectionMode(ListSelectionModel.SINGLE_SELECTION);

    final JList tmpList = list;
    list.addMouseListener(new MouseAdapter() {
        public void mousePressed(MouseEvent e) {
            if (e.isPopupTrigger()) {
                int index = tmpList.locationToIndex(new Point(e.getX(), e.getY()));
                if (tmpList.getSelectedIndex() != index) {
                    tmpList.setSelectedIndex(index);
                }

                final JPopupMenu menu = new JPopupMenu();
                JMenuItem item = new JMenuItem();
                item.setAction(context.getActionMap().get("copy"));
                item.setIcon(null);
                menu.add(item);

                final int x = e.getX();
                final int y = e.getY();
                final Component c = e.getComponent();
                SwingUtilities.invokeLater(new Runnable() {
                    public void run() {
                        menu.show(c, x, y);
                    }
                });

            }
        }
    });

    scroll = new JScrollPane(list, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,
            JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
    scroll.setMinimumSize(new Dimension(250, 100));
    scroll.setPreferredSize(new Dimension(400, 300));
    rightBuilder.setExtent(3, 1);
    rightBuilder.add(scroll, new CellConstraints(1, 2, 4, 1, CellConstraints.FILL, CellConstraints.FILL,
            new Insets(0, 0, 0, 0)));

    // Add caselog message
    ImageIcon icon = i18n.icon(Icons.message_add, 24);
    rightBuilder.add(new JLabel(icon), new CellConstraints(1, 3, 1, 1, CellConstraints.LEFT,
            CellConstraints.TOP, new Insets(10, 10, 0, 0)));
    newMessageArea = new JTextArea(10, 30);
    newMessageArea.setLineWrap(true);
    newMessageArea.setWrapStyleWord(true);
    newMessagePane = new JScrollPane(newMessageArea);
    newMessagePane.setMinimumSize(new Dimension(10, 10));
    newMessagePane.setPreferredSize(new Dimension(10, 70));
    rightBuilder.add(newMessagePane, new CellConstraints(2, 3, 3, 1, CellConstraints.FILL, CellConstraints.TOP,
            new Insets(10, 0, 0, 0)));

    newMessageArea.addKeyListener(new KeyListener() {
        public void keyTyped(KeyEvent e) {
        }

        public void keyReleased(KeyEvent e) {
            if (e.getKeyCode() == 10) {
                if (!e.isControlDown()) {
                    newMessageArea.setText("");
                }
            }
        }

        public void keyPressed(KeyEvent e) {
            if (e.getKeyCode() == 10) {
                if (e.isControlDown()) {
                    newMessageArea.append("\n");
                } else {
                    addMessage();
                }
            }
        }
    });

    listSelectionListener = new ListSelectionListener() {

        public void valueChanged(ListSelectionEvent event) {
            if (!event.getValueIsAdjusting()) {
                final CaseLogEntryDTO selectedValue = (CaseLogEntryDTO) ((JList) event.getSource())
                        .getSelectedValue();
                if (selectedValue != null) {
                    new CommandTask() {

                        @Override
                        protected void command() throws Exception {
                            model.togglepublish(selectedValue);
                        }
                    }.execute();
                    ((JList) event.getSource()).clearSelection();
                }
            }
        }
    };

    addHierarchyListener(new HierarchyListener() {
        public void hierarchyChanged(HierarchyEvent e) {
            if ((e.getChangeFlags() & HierarchyEvent.SHOWING_CHANGED) != 0 && !isShowing() && editMode) {
                editButton.setSelected(false);
                configureComponentsForEdit(false);
            }
        }
    });

    new RefreshWhenShowing(this, this);
}

From source file:se.streamsource.streamflow.client.ui.workspace.cases.general.CaseGeneralView.java

License:Apache License

public CaseGeneralView(@Service ApplicationContext appContext, @Uses CaseGeneralModel generalModel,
        @Uses CaseLogView caseLogView, @Structure Module module) {
    this.appContext = appContext;
    this.model = generalModel;
    RefreshComponents refreshComponents = new RefreshComponents();
    model.addObserver(refreshComponents);
    ObjectBuilderFactory obf = module.objectBuilderFactory();
    this.labels = obf.newObjectBuilder(CaseLabelsView.class).use(generalModel.newLabelsModel()).newInstance();
    this.caseNotes = obf.newObjectBuilder(CaseNoteView.class).use(generalModel.newCaseNoteModel())
            .newInstance();/*from  ww  w  . ja  va  2s  .co m*/

    RefreshComponents refreshLabelComponents = new RefreshComponents();
    labels.getModel().addObserver(refreshLabelComponents);

    this.forms = obf.newObjectBuilder(PossibleFormsView.class).use(generalModel.newPossibleFormsModel())
            .newInstance();
    refreshComponents.visibleOn("changedescription", forms);
    this.setBorder(BorderFactory.createEmptyBorder());
    getVerticalScrollBar().setUnitIncrement(30);

    setActionMap(appContext.getActionMap(this));
    ActionMap am = getActionMap();
    MacOsUIWrapper.convertAccelerators(appContext.getActionMap(CaseGeneralView.class, this));

    actionBinder = obf.newObjectBuilder(ActionBinder.class).use(am).newInstance();
    valueBinder = obf.newObject(ValueBinder.class);
    actionBinder.setResourceMap(appContext.getResourceMap(getClass()));

    // Layout and form for the right panel
    FormLayout leftLayout = new FormLayout("70dlu, 2dlu, 200:grow, 70dlu",
            "pref, pref, pref, pref, 20dlu, pref, pref, pref, pref");

    leftPane = new JPanel(leftLayout);
    leftPane.setFocusable(false);
    DefaultFormBuilder leftBuilder = new DefaultFormBuilder(leftLayout, leftPane);
    leftBuilder.setBorder(Borders.createEmptyBorder(Sizes.DLUY2, Sizes.DLUX2, Sizes.DLUY2, Sizes.DLUX11));

    selectedCaseType.getLabel().setFont(selectedCaseType.getLabel().getFont().deriveFont(Font.BOLD));
    selectedCaseType.getButton().addActionListener(am.get("removeCaseType"));
    valueBinder.bind("caseType", selectedCaseType);

    // Description & DueDate
    leftBuilder.setExtent(3, 1);
    JLabel descriptionLabel = leftBuilder.getComponentFactory()
            .createLabel(i18n.text(WorkspaceResources.description_label));
    leftBuilder.add(descriptionLabel);
    descriptionLabel.setBorder(BorderFactory.createEmptyBorder(0, 2, 0, 0));
    leftBuilder.nextColumn(3);
    JLabel dueOnLabel = leftBuilder.append(i18n.text(WorkspaceResources.due_on_label));
    dueOnLabel.setBorder(BorderFactory.createEmptyBorder(0, 2, 0, 0));

    leftBuilder.nextLine();
    leftBuilder.setExtent(3, 1);
    JPanel descPanel = new JPanel(new BorderLayout());
    descPanel.add(valueBinder.bind("description",
            actionBinder.bind("changeDescription", descriptionField = (JTextField) TEXTFIELD.newField())),
            BorderLayout.WEST);
    leftBuilder.add(descPanel);
    descriptionField.setName("txtCaseDescription");
    leftBuilder.add(
            valueBinder.bind("dueOn",
                    actionBinder.bind("changeDueOn", dueOnField = (JXDatePicker) DATEPICKER.newField())),
            new CellConstraints(4, 2, 1, 1, CellConstraints.LEFT, CellConstraints.BOTTOM,
                    new Insets(4, 0, 0, 0)));
    leftBuilder.nextLine();
    descriptionLabel.setLabelFor(descriptionField);
    dueOnLabel.setLabelFor(dueOnField);
    refreshComponents.enabledOn("changedescription", descriptionField);
    refreshComponents.enabledOn("changedueon", dueOnField);

    // Select case type
    javax.swing.Action caseTypeAction = am.get("changeCaseType");
    caseTypeButton = new StreamflowButton(caseTypeAction);
    caseTypeButton.registerKeyboardAction(caseTypeAction,
            (KeyStroke) caseTypeAction.getValue(javax.swing.Action.ACCELERATOR_KEY),
            JComponent.WHEN_IN_FOCUSED_WINDOW);
    caseTypeButton.setHorizontalAlignment(SwingConstants.LEFT);
    refreshComponents.enabledOn("casetype", caseTypeButton, selectedCaseType);

    leftBuilder.add(caseTypeButton,
            new CellConstraints(1, 3, 1, 1, CellConstraints.FILL, CellConstraints.TOP, new Insets(2, 0, 5, 0)));
    leftBuilder.add(selectedCaseType, new CellConstraints(3, 3, 1, 1, CellConstraints.LEFT,
            CellConstraints.BOTTOM, new Insets(5, 5, 0, 0)));

    JLabel priorityLabel = leftBuilder.getComponentFactory()
            .createLabel(i18n.text(WorkspaceResources.priority_label));
    priorityLabel.setBorder(BorderFactory.createEmptyBorder(0, 2, 0, 0));

    leftBuilder.add(priorityLabel, new CellConstraints(4, 3, 1, 1, CellConstraints.FILL, CellConstraints.BOTTOM,
            new Insets(4, 0, 0, 0)));

    leftBuilder.nextLine();

    // Select labels
    javax.swing.Action labelAction = labels.getActionMap().get("addLabel");
    labelButton = new StreamflowButton(labelAction);
    // NotificationGlassPane.registerButton(labelButton);
    labelButton.registerKeyboardAction(labelAction,
            (KeyStroke) labelAction.getValue(javax.swing.Action.ACCELERATOR_KEY),
            JComponent.WHEN_IN_FOCUSED_WINDOW);

    labelButton.setHorizontalAlignment(SwingConstants.LEFT);
    labels.setButtonRelation(labelButton);
    refreshLabelComponents.enabledOn("addlabel", labelButton, labels);

    leftBuilder.add(labelButton,
            new CellConstraints(1, 4, 1, 1, CellConstraints.FILL, CellConstraints.TOP, new Insets(5, 0, 0, 0)));

    labels.setPreferredSize(new Dimension(500, 50));
    leftBuilder.add(labels,
            new CellConstraints(3, 4, 1, 1, CellConstraints.LEFT, CellConstraints.TOP, new Insets(5, 0, 0, 0)));

    JPanel prioPanel = new JPanel(new BorderLayout());
    prioPanel.add(valueBinder.bind("priority",
            actionBinder.bind("changePriority", casePriority = (JComboBox) COMBOBOX.newField())));
    leftBuilder.add(prioPanel, new CellConstraints(4, 4, 1, 1, CellConstraints.FILL, CellConstraints.TOP,

            new Insets(2, 0, 0, 0)));

    priorityLabel.setLabelFor(casePriority);
    refreshComponents.visibleOn("changepriority", casePriority, priorityLabel);
    refreshComponents.enabledOn("changepriority", casePriority, priorityLabel);
    casePriority.setRenderer(new DefaultListCellRenderer() {
        public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected,
                boolean cellHasFocus) {

            final PriorityValue itemValue = (PriorityValue) value;
            String val = itemValue == null ? "" : itemValue.text().get();

            JPanel panel = new JPanel();
            panel.setOpaque(false);
            FormLayout layout = new FormLayout("10dlu, 60dlu:grow", "pref");
            DefaultFormBuilder formBuilder = new DefaultFormBuilder(layout, panel);

            panel.setBorder(BorderFactory.createEmptyBorder(2, 0, 1, 0));
            JLabel label = new JLabel() {
                @Override
                protected void paintComponent(Graphics g) {
                    Color color = getBackground();
                    if (itemValue != null) {
                        if (!Strings.empty(itemValue.color().get()))
                            color = new Color(parseInt(itemValue.color().get()));
                        else
                            color = Color.BLACK;
                    }
                    final Color FILL_COLOR = ColorUtil.removeAlpha(color);

                    Graphics2D g2 = (Graphics2D) g.create();

                    try {
                        g2.setRenderingHint(KEY_ANTIALIASING, VALUE_ANTIALIAS_ON);
                        g2.setColor(Color.LIGHT_GRAY);
                        final int DIAM = Math.min(getWidth(), getHeight());
                        final int inset = 3;
                        g2.fill(new Ellipse2D.Float(inset, inset, DIAM - 2 * inset, DIAM - 2 * inset));
                        g2.setColor(FILL_COLOR);
                        final int border = 1;
                        g2.fill(new Ellipse2D.Float(inset + border, inset + border,
                                DIAM - 2 * inset - 2 * border, DIAM - 2 * inset - 2 * border));
                    } finally {
                        g2.dispose();
                    }
                }
            };
            label.setPreferredSize(new Dimension(10, 10));
            formBuilder.add((Strings.empty(val) || "-".equals(val)) ? new JLabel() : label, new CellConstraints(
                    1, 1, 1, 1, CellConstraints.FILL, CellConstraints.FILL, new Insets(0, 0, 0, 0)));
            JLabel text = new JLabel(val);
            formBuilder.add(text, new CellConstraints(2, 1, 1, 1, CellConstraints.LEFT, CellConstraints.FILL,
                    new Insets(0, 0, 0, 0)));

            return panel;
        }
    });
    leftBuilder.nextLine();

    leftBuilder.add(caseNotes,
            new CellConstraints(1, 6, 4, 1, CellConstraints.FILL, CellConstraints.TOP, new Insets(0, 2, 5, 0)));

    // Forms
    JLabel formsLabel = new JLabel(i18n.text(WorkspaceResources.forms_label));
    refreshComponents.visibleOn("changedescription", formsLabel);
    leftBuilder.add(formsLabel,
            new CellConstraints(1, 7, 1, 1, CellConstraints.LEFT, CellConstraints.TOP, new Insets(5, 0, 0, 0)));
    leftBuilder.nextLine();

    JPanel formsPanel = new JPanel(new BorderLayout());
    formsPanel.add(forms, BorderLayout.WEST);
    leftBuilder.add(formsPanel, new CellConstraints(1, 8, 3, 1, CellConstraints.FILL, CellConstraints.FILL,
            new Insets(5, 0, 0, 0)));

    // Limit pickable dates to future
    Calendar calendar = Calendar.getInstance();
    calendar.setTime(new Date());
    calendar.add(Calendar.DAY_OF_MONTH, 1);
    dueOnField.getMonthView().setLowerBound(calendar.getTime());

    final DateFormat dateFormat = DateFormat.getDateInstance(DateFormat.SHORT);
    dateFormat.setTimeZone(TimeZone.getTimeZone("UTC"));
    dueOnField.getEditor().setFormatterFactory(
            new DefaultFormatterFactory(new DatePickerFormatter(new DateFormat[] { dateFormat }) {
                @Override
                public Object stringToValue(String text) throws ParseException {
                    Object result;
                    try {
                        result = super.stringToValue(text);
                    } catch (ParseException pe) {
                        dialogs.showMessageDialog(dueOnField,
                                text(WorkspaceResources.wrong_format_msg) + " "
                                        + ((SimpleDateFormat) dateFormat).toPattern(),
                                text(WorkspaceResources.wrong_format_title));
                        throw pe;
                    }
                    return result;
                }
            }));

    // Main panel that contains both left and right pane
    JPanel formsContainer = new JPanel();
    formsContainer.setLayout(new GridLayout(1, 2));
    formsContainer.setBorder(Borders.createEmptyBorder("2dlu, 2dlu, 2dlu, 2dlu"));
    formsContainer.add(leftPane);
    formsContainer.add(caseLogView);

    setViewportView(formsContainer);

    setFocusTraversalPolicy(new LayoutFocusTraversalPolicy());
    setFocusCycleRoot(true);
    setFocusable(true);

    new RefreshWhenShowing(this, this);
}

From source file:uk.ac.ebi.mnb.importer.xls.wizzard.ExcelImportDialog.java

License:Open Source License

@Override
public JPanel getNavigation() {
    JPanel panel = super.getNavigation();

    FormLayout navLayout = (FormLayout) panel.getLayout();

    navLayout.insertColumn(1, new ColumnSpec(Sizes.MINIMUM));
    navLayout.insertColumn(2, new ColumnSpec(Sizes.DLUX2));
    navLayout.insertColumn(3, new ColumnSpec(Sizes.MINIMUM));

    panel.add(new JButton(new PrevPanel()), cc.xy(1, 1));
    panel.add(new JButton(new NextPanel()), cc.xy(3, 1));

    return panel;
}