Example usage for com.jgoodies.forms.factories Borders createEmptyBorder

List of usage examples for com.jgoodies.forms.factories Borders createEmptyBorder

Introduction

In this page you can find the example usage for com.jgoodies.forms.factories Borders createEmptyBorder.

Prototype

public static Border createEmptyBorder(ConstantSize top, ConstantSize left, ConstantSize bottom,
        ConstantSize right) 

Source Link

Document

Creates and returns an EmptyBorder with the specified gaps.

Usage

From source file:org.springframework.richclient.util.GuiStandardUtils.java

License:Apache License

public static Border createTopAndBottomBorder(ConstantSize space) {
    return Borders.createEmptyBorder(space, Sizes.ZERO, space, Sizes.ZERO);
}

From source file:se.streamsource.streamflow.client.ui.administration.surface.AccessPointView.java

License:Apache License

public AccessPointView(@Service ApplicationContext appContext, @Uses final AccessPointModel model,
        @Structure Module module) {//w  w  w. java2s. c  o m
    this.model = model;
    this.labels = module.objectBuilderFactory().newObjectBuilder(CaseLabelsView.class)
            .use(model.getLabelsModel()).newInstance();

    setLayout(new BorderLayout());
    setActionMap(appContext.getActionMap(this));

    RefreshComponents refreshComponents = new RefreshComponents();
    model.addObserver(refreshComponents);

    actionBinder = module.objectBuilderFactory().newObjectBuilder(ActionBinder.class).use(getActionMap())
            .newInstance();
    valueBinder = module.objectBuilderFactory().newObject(ValueBinder.class);
    actionBinder.setResourceMap(appContext.getResourceMap(getClass()));
    LinkValueConverter linkValueConverter = new LinkValueConverter();

    FormLayout layout = new FormLayout("90dlu, 5dlu, 150:grow",
            "pref, 2dlu, pref, 2dlu, pref, 2dlu, pref, 2dlu, pref, 2dlu, "
                    + "pref, 12dlu, pref, 2dlu, pref, 12dlu, pref, 2dlu, default:grow");

    JPanel panel = new JPanel(layout);
    DefaultFormBuilder builder = new DefaultFormBuilder(layout, panel);
    builder.setBorder(Borders.createEmptyBorder(Sizes.DLUY8, Sizes.DLUX4, Sizes.DLUY2, Sizes.DLUX8));

    CellConstraints cc = new CellConstraints();

    MacOsUIWrapper.convertAccelerators(appContext.getActionMap(AccessPointView.class, this));

    selectedProject.setFont(selectedProject.getFont().deriveFont(Font.BOLD));

    selectedCaseType.setFont(selectedCaseType.getFont().deriveFont(Font.BOLD));

    selectedForm.setFont(selectedForm.getFont().deriveFont(Font.BOLD));

    selectedTemplate.getLabel().setFont(selectedTemplate.getLabel().getFont().deriveFont(Font.BOLD));

    ActionMap am = getActionMap();

    // Select project
    javax.swing.Action projectAction = am.get("project");
    projectButton = new StreamflowButton(projectAction);
    projectButton.registerKeyboardAction(projectAction,
            (KeyStroke) projectAction.getValue(javax.swing.Action.ACCELERATOR_KEY),
            JComponent.WHEN_IN_FOCUSED_WINDOW);
    projectButton.setHorizontalAlignment(SwingConstants.LEFT);

    builder.add(projectButton, cc.xy(1, 1));

    builder.add(valueBinder.bind("project", selectedProject, linkValueConverter), new CellConstraints(3, 1, 1,
            1, CellConstraints.LEFT, CellConstraints.CENTER, new Insets(5, 0, 0, 0)));

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

    builder.add(caseTypeButton, cc.xy(1, 3));

    builder.add(valueBinder.bind("caseType", selectedCaseType, linkValueConverter), new CellConstraints(3, 3, 1,
            1, CellConstraints.LEFT, CellConstraints.CENTER, new Insets(5, 0, 0, 0)));

    // Select labels
    javax.swing.Action labelAction = labels.getActionMap().get("addLabel");
    labelButton = new StreamflowButton(labelAction);

    labelButton.registerKeyboardAction(labelAction,
            (KeyStroke) labelAction.getValue(javax.swing.Action.ACCELERATOR_KEY),
            JComponent.WHEN_IN_FOCUSED_WINDOW);

    labelButton.setHorizontalAlignment(SwingConstants.LEFT);

    builder.add(labelButton, cc.xy(1, 5, CellConstraints.FILL, CellConstraints.TOP));

    labels.setPreferredSize(new Dimension(500, 60));
    labels.setTextBold(true);
    labels.setButtonRelation(labelButton);
    builder.add(labels,
            new CellConstraints(3, 5, 1, 1, CellConstraints.LEFT, CellConstraints.TOP, new Insets(5, 0, 0, 0)));

    // Select form
    javax.swing.Action formAction = am.get("form");
    formButton = new StreamflowButton(formAction);

    formButton.registerKeyboardAction(formAction,
            (KeyStroke) formAction.getValue(javax.swing.Action.ACCELERATOR_KEY),
            JComponent.WHEN_IN_FOCUSED_WINDOW);

    formButton.setHorizontalAlignment(SwingConstants.LEFT);

    builder.add(formButton, cc.xy(1, 7, CellConstraints.FILL, CellConstraints.TOP));

    // Open replace selection field value editor
    javax.swing.Action replaceSelectionFieldValueAction = am.get("openReplaceSelectionFieldValueEditor");
    replaceSelectionFieldValueEditButton = new StreamflowButton(replaceSelectionFieldValueAction);

    /*replaceSelectionFieldValueEditButton.registerKeyboardAction( replaceSelectionFieldValueAction, (KeyStroke) replaceSelectionFieldValueAction
       .getValue( javax.swing.Action.ACCELERATOR_KEY ),
       JComponent.WHEN_IN_FOCUSED_WINDOW ); */

    replaceSelectionFieldValueEditButton.setHorizontalAlignment(SwingConstants.RIGHT);
    PanelBuilder panelBuilder = new PanelBuilder(new FormLayout("150dlu,5dlu,250:grow", "pref"));
    panelBuilder.add(valueBinder.bind("form", selectedForm, linkValueConverter));
    panelBuilder.nextColumn(2);
    panelBuilder.add(replaceSelectionFieldValueEditButton, new CellConstraints(3, 1, 1, 1,
            CellConstraints.RIGHT, CellConstraints.CENTER, new Insets(0, 0, 0, 0)));
    //panelBuilder.setBorder(BorderFactory.createLineBorder(Color.RED));

    builder.add(panelBuilder.getPanel()/*valueBinder.bind( "form", selectedForm, linkValueConverter )*/,
            new CellConstraints(3, 7, 1, 1, CellConstraints.LEFT, CellConstraints.CENTER,
                    new Insets(5, 0, 0, 0)));

    // Select template
    javax.swing.Action templateAction = am.get("template");
    templateButton = new StreamflowButton(templateAction);

    templateButton.registerKeyboardAction(templateAction,
            (KeyStroke) templateAction.getValue(javax.swing.Action.ACCELERATOR_KEY),
            JComponent.WHEN_IN_FOCUSED_WINDOW);

    templateButton.setHorizontalAlignment(SwingConstants.LEFT);

    builder.add(templateButton, cc.xy(1, 9, CellConstraints.FILL, CellConstraints.TOP));

    builder.add(valueBinder.bind("template", actionBinder.bind("removeTemplate", selectedTemplate)),
            new CellConstraints(3, 9, 1, 1, CellConstraints.LEFT, CellConstraints.CENTER,
                    new Insets(3, 0, 0, 0)));

    builder.add(new JLabel(text(AdministrationResources.cookieExpirationHours)),
            cc.xy(1, 13, CellConstraints.LEFT, CellConstraints.BOTTOM));
    builder.add(
            valueBinder.bind("cookieExpirationHours",
                    actionBinder.bind("changeCookieExpirationHours", cookieExpiration = new JTextField())),
            new CellConstraints(3, 13, 1, 1, CellConstraints.FILL, CellConstraints.BOTTOM,
                    new Insets(3, 0, 0, 0)));

    mailSelectionLabel.setText(text(AdministrationResources.changeMailSelectionMessage));
    mailSelectionLabel.setToolTipText(text(AdministrationResources.changeMailSelectionMessageHint));
    builder.add(mailSelectionLabel, cc.xy(1, 15, CellConstraints.LEFT, CellConstraints.BOTTOM));

    builder.add(
            valueBinder.bind("mailSelectionMessage",
                    actionBinder.bind("changeMailSelectionMessage", mailSelectionField)),
            new CellConstraints(3, 15, 1, 1, CellConstraints.FILL, CellConstraints.BOTTOM,
                    new Insets(3, 0, 0, 0)));

    PanelBuilder signPanel = new PanelBuilder(new FormLayout("180dlu, 15dlu, 180dlu", "default:grow"));
    CellConstraints signPanelCc = new CellConstraints();

    PanelBuilder primarySignPanel = new PanelBuilder(new FormLayout("180dlu",
            "pref, 2dlu, pref, 2dlu, pref, 2dlu, pref, 2dlu, pref, 2dlu, pref, 2dlu, default:grow"));
    CellConstraints primaryCc = new CellConstraints();

    primarySignPanel.addSeparator(text(AdministrationResources.signature_1), primaryCc.xy(1, 1));

    primarySignPanel.add(valueBinder.bind("primarysign",
            actionBinder.bind("setSignActive1",
                    signActive1 = new JCheckBox(text(AdministrationResources.active))),
            new ValueBinder.Converter<RequiredSignatureValue, Boolean>() {
                public Boolean toComponent(RequiredSignatureValue value) {
                    return value != null ? value.active().get() : Boolean.FALSE;
                }
            }), primaryCc.xy(1, 3));

    primarySignPanel.addLabel(text(AdministrationResources.name_label), primaryCc.xy(1, 5));

    primarySignPanel.add(
            valueBinder.bind("primarysign", actionBinder.bind("setSignName1", signName1 = new JTextField()),
                    new ValueBinder.Converter<RequiredSignatureValue, String>() {
                        public String toComponent(RequiredSignatureValue value) {
                            return value != null ? value.name().get() : "";
                        }
                    }),
            primaryCc.xy(1, 7));
    refreshComponents.enabledOn("updateprimarysign", signName1);

    primarySignPanel.add(new JLabel(text(AdministrationResources.description_label)), primaryCc.xy(1, 9));

    primarySignPanel.add(valueBinder.bind("primarysign",
            actionBinder.bind("setSignDescription1", signDescription1 = new JTextField()),
            new ValueBinder.Converter<RequiredSignatureValue, String>() {
                public String toComponent(RequiredSignatureValue value) {
                    return value != null ? value.description().get() : "";
                }
            }), primaryCc.xy(1, 11));
    refreshComponents.enabledOn("updateprimarysign", signDescription1);

    signPanel.add(primarySignPanel.getPanel(), signPanelCc.xy(1, 1, CellConstraints.LEFT, CellConstraints.TOP));

    PanelBuilder secondarySignPanel = new PanelBuilder(new FormLayout("180dlu",
            "pref, 2dlu, pref, 2dlu, pref, 2dlu, pref, 2dlu, pref, 2dlu, pref, 2dlu, pref, 2dlu, pref, 12dlu, pref, 2dlu, pref, 2dlu, default:grow"));

    CellConstraints secondaryCc = new CellConstraints();

    secondarySignPanel.addSeparator(text(AdministrationResources.signature_2), secondaryCc.xy(1, 1));

    PanelBuilder secondaryOptionsPanel = new PanelBuilder(new FormLayout("70dlu,5dlu,70dlu,pref:grow", "pref"));
    secondaryOptionsPanel.add(valueBinder.bind("secondarysign",
            actionBinder.bind("setSignActive2",
                    signActive2 = new JCheckBox(text(AdministrationResources.active))),
            new ValueBinder.Converter<RequiredSignatureValue, Boolean>() {
                public Boolean toComponent(RequiredSignatureValue value) {
                    return value != null ? value.active().get() : Boolean.FALSE;
                }
            }), secondaryCc.xy(1, 1));
    refreshComponents.enabledOn("updatesecondarysignactive", signActive2);

    secondaryOptionsPanel.add(valueBinder.bind("secondarysign",
            actionBinder.bind("setSecondMandatory",
                    mandatory2 = new JCheckBox(text(AdministrationResources.mandatory))),
            new ValueBinder.Converter<RequiredSignatureValue, Boolean>() {
                public Boolean toComponent(RequiredSignatureValue value) {
                    return value != null ? value.mandatory().get() : Boolean.FALSE;
                }
            }), secondaryCc.xy(3, 1));
    refreshComponents.enabledOn("updatesecondarysign", mandatory2);

    secondarySignPanel.add(secondaryOptionsPanel.getPanel(), secondaryCc.xy(1, 3));

    secondarySignPanel.add(new JLabel(text(AdministrationResources.name_label)), secondaryCc.xy(1, 5));

    secondarySignPanel.add(
            valueBinder.bind("secondarysign", actionBinder.bind("setSignName2", signName2 = new JTextField()),
                    new ValueBinder.Converter<RequiredSignatureValue, String>() {
                        public String toComponent(RequiredSignatureValue value) {
                            return value != null ? value.name().get() : "";
                        }
                    }),
            secondaryCc.xy(1, 7));
    refreshComponents.enabledOn("updatesecondarysign", signName2);

    secondarySignPanel.add(new JLabel(text(AdministrationResources.description_label)), secondaryCc.xy(1, 9));

    secondarySignPanel.add(valueBinder.bind("secondarysign",
            actionBinder.bind("setSignDescription2", signDescription2 = new JTextField()),
            new ValueBinder.Converter<RequiredSignatureValue, String>() {
                public String toComponent(RequiredSignatureValue value) {
                    return value != null ? value.description().get() : "";
                }
            }), secondaryCc.xy(1, 11));
    refreshComponents.enabledOn("updatesecondarysign", signDescription2);

    // Select form
    javax.swing.Action form2Action = am.get("setSecondForm");
    form2Button = new StreamflowButton(form2Action);

    form2Button.registerKeyboardAction(form2Action,
            (KeyStroke) form2Action.getValue(javax.swing.Action.ACCELERATOR_KEY),
            JComponent.WHEN_IN_FOCUSED_WINDOW);

    form2Button.setHorizontalAlignment(SwingConstants.LEFT);
    refreshComponents.enabledOn("updatesecondarysign", form2Button);

    PanelBuilder form2ButtonPanel = new PanelBuilder(new FormLayout("70dlu, 5dlu, 150dlu:grow", "pref"));
    CellConstraints form2ButtonPanelCc = new CellConstraints();

    form2ButtonPanel.add(form2Button, form2ButtonPanelCc.xy(1, 1, CellConstraints.FILL, CellConstraints.TOP));

    form2ButtonPanel.add(valueBinder.bind("secondarysign", selectedForm2 = new JLabel(),
            new ValueBinder.Converter<RequiredSignatureValue, String>() {
                public String toComponent(RequiredSignatureValue value) {
                    return value != null ? value.formdescription().get() : "";
                }
            }), form2ButtonPanelCc.xy(3, 1, CellConstraints.LEFT, CellConstraints.CENTER));

    secondarySignPanel.add(form2ButtonPanel.getPanel(), secondaryCc.xy(1, 13));

    secondarySignPanel.add(new JLabel(text(AdministrationResources.question_label)), secondaryCc.xy(1, 17));

    secondarySignPanel.add(valueBinder.bind("secondarysign",
            actionBinder.bind("setQuestion", formQuestion2 = new JTextField()),
            new ValueBinder.Converter<RequiredSignatureValue, String>() {
                public String toComponent(RequiredSignatureValue value) {
                    return value != null ? value.question().get() : "";
                }
            }), secondaryCc.xy(1, 19));
    refreshComponents.enabledOn("updatesecondarysign", formQuestion2);

    signPanel.add(secondarySignPanel.getPanel(),
            signPanelCc.xy(3, 1, CellConstraints.LEFT, CellConstraints.TOP));

    builder.add(signPanel.getPanel(), new CellConstraints(1, 17, 3, 1, CellConstraints.FILL,
            CellConstraints.FILL, new Insets(0, 0, 0, 0)));

    JPanel templatePanel = new JPanel();
    templatePanel.setVisible(false);
    FormLayout templateFormLayout = new FormLayout("75dlu, 5dlu, fill:p:grow", "pref, pref, fill:p:grow, pref");
    DefaultFormBuilder templateFormBuilder = new DefaultFormBuilder(templateFormLayout, templatePanel);
    templateFormBuilder.addSeparator(text(AdministrationResources.emailTemplates));
    templateFormBuilder.nextLine();
    templateFormBuilder.append(text(AdministrationResources.subject),
            valueBinder.bind("subject", actionBinder.bind("changeSubject", subject = new JTextField())));
    templateFormBuilder.nextLine();
    templateFormBuilder.append(new JScrollPane(emailTemplateList));
    templateFormBuilder.append(new JScrollPane(actionBinder.bind("save", emailTemplateText)));
    templateFormBuilder.nextLine();

    emailTemplateList.addListSelectionListener(new ListSelectionListener() {
        public void valueChanged(ListSelectionEvent e) {
            if (!e.getValueIsAdjusting()) {
                if (emailTemplateList.getSelectedIndex() != -1) {
                    emailTemplateText.setText(model.getAccessPointValue().messages().get()
                            .get(emailTemplateList.getSelectedValue()));
                }
            }
        }
    });

    refreshComponents.visibleOn("updatesecondarysign", templatePanel);

    builder.add(templatePanel, new CellConstraints(1, 19, 3, 1, CellConstraints.FILL, CellConstraints.FILL,
            new Insets(0, 0, 0, 0)));
    add(new JScrollPane(panel), BorderLayout.CENTER);

    new RefreshWhenShowing(this, this);
}

From source file:se.streamsource.streamflow.client.ui.administration.templates.SelectedTemplatesView.java

License:Apache License

public SelectedTemplatesView(@Service ApplicationContext appContext, @Uses SelectedTemplatesModel model,
        @Structure Module module) {/* ww  w  .j av  a2 s. c o  m*/
    this.model = model;
    model.addObserver(this);

    selectedTemplatesBinder = module.objectBuilderFactory().newObject(StateBinder.class);
    selectedTemplatesBinder.addObserver(this);
    selectedTemplatesBinder.addConverter(new StateBinder.Converter() {
        public Object toComponent(Object value) {
            if (value instanceof LinkValue) {
                return ((LinkValue) value).text().get();
            } else
                return value;
        }

        public Object fromComponent(Object value) {
            return value;
        }
    });
    selectedTemplatesBinder.setResourceMap(appContext.getResourceMap(getClass()));
    SelectedTemplatesDTO template = selectedTemplatesBinder.bindingTemplate(SelectedTemplatesDTO.class);

    defaultTemplate.getLabel().setFont(defaultTemplate.getLabel().getFont().deriveFont(Font.BOLD));
    defaultTemplate.setPreferredSize(new Dimension(150, 25));

    formTemplate.getLabel().setFont(formTemplate.getLabel().getFont().deriveFont(Font.BOLD));
    formTemplate.setPreferredSize(new Dimension(150, 25));

    caseTemplate.getLabel().setFont(caseTemplate.getLabel().getFont().deriveFont(Font.BOLD));
    caseTemplate.setPreferredSize(new Dimension(150, 25));

    FormLayout layout = new FormLayout("80dlu, 5dlu, 150:grow",
            "pref, 2dlu, pref, 2dlu, pref, 2dlu, pref:grow");

    JPanel panel = new JPanel(layout);
    DefaultFormBuilder builder = new DefaultFormBuilder(layout, panel);
    builder.setBorder(Borders.createEmptyBorder(Sizes.DLUY8, Sizes.DLUX4, Sizes.DLUY2, Sizes.DLUX8));

    CellConstraints cc = new CellConstraints();

    setActionMap(appContext.getActionMap(this));
    MacOsUIWrapper.convertAccelerators(appContext.getActionMap(SelectedTemplatesView.class, this));

    ActionMap am = getActionMap();

    // Select default template
    javax.swing.Action defaultTemplateAction = am.get("defaultTemplate");
    defaultTemplateButton = new StreamflowButton(defaultTemplateAction);

    defaultTemplateButton.registerKeyboardAction(defaultTemplateAction,
            (KeyStroke) defaultTemplateAction.getValue(javax.swing.Action.ACCELERATOR_KEY),
            JComponent.WHEN_IN_FOCUSED_WINDOW);

    defaultTemplateButton.setHorizontalAlignment(SwingConstants.LEFT);

    builder.add(defaultTemplateButton, cc.xy(1, 3, CellConstraints.FILL, CellConstraints.TOP));

    builder.add(selectedTemplatesBinder.bind(defaultTemplate, template.defaultPdfTemplate()),
            new CellConstraints(3, 3, 1, 1, CellConstraints.LEFT, CellConstraints.TOP, new Insets(3, 0, 0, 0)));

    // Select form template
    javax.swing.Action formTemplateAction = am.get("formTemplate");
    formTemplateButton = new StreamflowButton(formTemplateAction);

    formTemplateButton.registerKeyboardAction(formTemplateAction,
            (KeyStroke) formTemplateAction.getValue(javax.swing.Action.ACCELERATOR_KEY),
            JComponent.WHEN_IN_FOCUSED_WINDOW);

    formTemplateButton.setHorizontalAlignment(SwingConstants.LEFT);

    builder.add(formTemplateButton, cc.xy(1, 5, CellConstraints.FILL, CellConstraints.TOP));

    builder.add(selectedTemplatesBinder.bind(formTemplate, template.formPdfTemplate()),
            new CellConstraints(3, 5, 1, 1, CellConstraints.LEFT, CellConstraints.TOP, new Insets(3, 0, 0, 0)));

    // Select case template
    javax.swing.Action caseTemplateAction = am.get("caseTemplate");
    caseTemplateButton = new StreamflowButton(caseTemplateAction);

    caseTemplateButton.registerKeyboardAction(caseTemplateAction,
            (KeyStroke) caseTemplateAction.getValue(javax.swing.Action.ACCELERATOR_KEY),
            JComponent.WHEN_IN_FOCUSED_WINDOW);

    caseTemplateButton.setHorizontalAlignment(SwingConstants.LEFT);

    builder.add(caseTemplateButton, cc.xy(1, 7, CellConstraints.FILL, CellConstraints.TOP));

    builder.add(selectedTemplatesBinder.bind(caseTemplate, template.casePdfTemplate()),
            new CellConstraints(3, 7, 1, 1, CellConstraints.LEFT, CellConstraints.TOP, new Insets(3, 0, 0, 0)));

    add(panel, BorderLayout.CENTER);

    selectedTemplatesBinder.updateWith(model.getSelectedTemplatesValue());

    new RefreshWhenShowing(this, model);
}

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 w  w  .j  av  a 2 s. co  m
    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 . j  a  v  a  2  s. c o 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:tvbrowserdataservice.TvBrowserDataServiceSettingsPanel.java

License:Open Source License

protected TvBrowserDataServiceSettingsPanel(TvBrowserDataServiceSettings settings) {

    mSettings = settings;// w w w  . j  av a2 s  . co  m
    setLayout(new FormLayout("200dlu:grow", "fill:150dlu:grow"));
    setBorder(Borders.createEmptyBorder(Sizes.DLUY5, Sizes.DLUX5, Sizes.DLUY5, Sizes.DLUX5));

    JTabbedPane tabbedPane = new JTabbedPane();

    /* level list pane */
    CellConstraints cc = new CellConstraints();
    EnhancedPanelBuilder levelList = new EnhancedPanelBuilder("5dlu,default:grow");
    levelList.setDefaultDialogBorder();

    levelList.addRow();
    levelList.addSeparator(mLocalizer.msg("downloadLevel", "Download this data"),
            cc.xyw(1, levelList.getRow(), 2));

    TvDataLevel[] levelArr = DayProgramFile.getLevels();

    String[] levelIds = settings.getLevelIds();

    mLevelCheckboxes = new JCheckBox[levelArr.length];
    for (int i = 0; i < levelArr.length; i++) {
        mLevelCheckboxes[i] = new JCheckBox(levelArr[i].getDescription());
        levelList.addRow();
        levelList.add(mLevelCheckboxes[i], cc.xy(2, levelList.getRow()));
        if (levelArr[i].isRequired()) {
            mLevelCheckboxes[i].setSelected(true);
            mLevelCheckboxes[i].setEnabled(false);
        } else {
            for (String levelId : levelIds) {
                if (levelId.equals(levelArr[i].getId())) {
                    mLevelCheckboxes[i].setSelected(true);
                }
            }
        }
    }

    /* group list pane */

    EnhancedPanelBuilder groupListPanel = new EnhancedPanelBuilder("5dlu,0dlu:grow");
    groupListPanel.setDefaultDialogBorder();

    JTextArea ta = UiUtilities.createHelpTextArea(mLocalizer.msg("channelgroup.description", "description"));

    groupListPanel.addRow();
    groupListPanel.add(ta, cc.xyw(1, groupListPanel.getRow(), 2));

    JPanel panel2 = new JPanel(new BorderLayout(10, 0));

    mGroupListModel = new DefaultListModel();

    mGroupList = new JList(mGroupListModel);
    mGroupList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
    panel2.add(new JScrollPane(mGroupList), BorderLayout.CENTER);

    JPanel panel3 = new JPanel(new BorderLayout());
    JPanel btnPn = new JPanel();
    btnPn.setLayout(new GridLayout(0, 1, 0, 4));

    mAddBtn = new JButton(Localizer.getLocalization(Localizer.I18N_ADD),
            TVBrowserIcons.newIcon(TVBrowserIcons.SIZE_SMALL));
    mRemoveBtn = new JButton(mLocalizer.msg("remove", "Remove"),
            TVBrowserIcons.delete(TVBrowserIcons.SIZE_SMALL));

    mInfoBtn = new JButton("Information",
            AbstractTvDataService.getPluginManager().getIconFromTheme(null, "actions", "help-browser", 16));

    mAddBtn.setHorizontalAlignment(SwingConstants.LEFT);
    mRemoveBtn.setHorizontalAlignment(SwingConstants.LEFT);
    mInfoBtn.setHorizontalAlignment(SwingConstants.LEFT);

    btnPn.add(mAddBtn);
    btnPn.add(mRemoveBtn);
    btnPn.add(mInfoBtn);

    mAddBtn.addActionListener(this);
    mRemoveBtn.addActionListener(this);
    mInfoBtn.addActionListener(this);

    panel3.add(btnPn, BorderLayout.NORTH);
    panel2.add(panel3, BorderLayout.EAST);

    JPanel groupInfoPanel = new JPanel(new BorderLayout(3, 0));
    JPanel westPn = new JPanel(new BorderLayout());

    westPn.add(new JLabel(mLocalizer.msg("description", "Description:")), BorderLayout.NORTH);
    groupInfoPanel.add(westPn, BorderLayout.WEST);

    mGroupDescriptionTA = UiUtilities.createHelpTextArea("");
    mGroupDescriptionTA.setPreferredSize(new Dimension(0, 40));

    groupInfoPanel.add(mGroupDescriptionTA, BorderLayout.CENTER);

    groupListPanel.addGrowingRow();
    groupListPanel.add(panel2, cc.xy(2, groupListPanel.getRow()));

    groupListPanel.addRow();
    groupListPanel.add(groupInfoPanel, cc.xy(2, groupListPanel.getRow()));

    tabbedPane.add(mLocalizer.msg("datalevel", "data level"), levelList.getPanel());
    tabbedPane.add(mLocalizer.msg("channelgroups", "channel groups"), groupListPanel.getPanel());

    add(tabbedPane, cc.xy(1, 1));

    mGroupList.addListSelectionListener(new ListSelectionListener() {

        public void valueChanged(ListSelectionEvent arg0) {
            mRemoveBtn.setEnabled(mGroupList.getSelectedIndex() >= 0);
            mInfoBtn.setEnabled(mGroupList.getSelectedIndex() >= 0);
            TvBrowserDataServiceChannelGroup group = (TvBrowserDataServiceChannelGroup) mGroupList
                    .getSelectedValue();
            if (group == null) {
                mGroupDescriptionTA.setText("");
            } else {
                mGroupDescriptionTA.setText(group.getDescription());
            }
        }
    });

    mRemoveBtn.setEnabled(mGroupList.getSelectedIndex() >= 0);
    mInfoBtn.setEnabled(mGroupList.getSelectedIndex() >= 0);
    fillGroupList(TvBrowserDataService.getInstance().getUserDefinedChannelGroups());

}

From source file:uk.ac.ebi.mnb.menu.build.MassChargeBalanceDialog.java

License:Open Source License

private void layoutForm() {
    FormLayout layout = new FormLayout("40dlu, 4dlu, 40dlu, 4dlu, 40dlu",
            "p, 2dlu, p, 4dlu, p, 2dlu, p, 2dlu, p");
    PanelBuilder builder = new PanelBuilder(layout);
    builder.setBorder(Borders.createEmptyBorder(Sizes.DLUX4, Sizes.DLUX4, Sizes.DLUX4, Sizes.DLUX4));
    CellConstraints cc = new CellConstraints();
    builder.add(new JLabel("Balancing Molecules"), cc.xyw(1, 1, 5));
    builder.add(new JSeparator(), cc.xyw(1, 3, 5));
    builder.add(protonCheckBox, cc.xy(1, 5));
    builder.add(waterCheckBox, cc.xy(3, 5));
    builder.add(oxygenCheckBox, cc.xy(5, 5));
    builder.add(new JSeparator(), cc.xyw(1, 7, 5));
    builder.add(getClose(), cc.xy(3, 9));
    builder.add(getActivate(), cc.xy(5, 9));
    add(builder.getPanel());//w  w w.  j  a va 2 s  .  com
}

From source file:virtualdataservice.VirtualDataServiceSettingsPanel.java

License:Open Source License

public VirtualDataServiceSettingsPanel(final String workingDirectory) {
    mChannelManager = new VirtualChannelManager(workingDirectory);

    setLayout(new BorderLayout());
    setBorder(Borders.createEmptyBorder(Sizes.DLUY5, Sizes.DLUX5, Sizes.DLUY5, Sizes.DLUX5));

    final FormLayout layout = new FormLayout("5dlu, default, 3dlu, pref, 5dlu",
            "5dlu, pref, 2dlu, pref, 2dlu, pref, 2dlu, pref, pref:grow, 10dlu, pref, 2dlu, pref, 2dlu, pref, 2dlu, pref, pref:grow");

    final PanelBuilder builder = new PanelBuilder(layout);
    builder.setBorder(null);// www .  j a v a  2  s .  co m

    final CellConstraints cc = new CellConstraints();

    mChannels = new DefaultListModel();
    mChannelList = new JList(mChannels);
    mChannelList.addListSelectionListener(new ListSelectionListener() {
        public void valueChanged(final ListSelectionEvent e) {
            setChannelButtons(true);
            loadProgram(getChannel());
        }
    });
    mChannelList.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION);
    final JScrollPane scrollChannel = new JScrollPane(mChannelList);

    mPrograms = new ProgramTableModel();
    mPrograms.addColumn(" ");
    mPrograms.addColumn(mLocalizer.msg("start", "Start"));
    mPrograms.addColumn(mLocalizer.msg("title", "Title"));
    mProgramList = new JTable(mPrograms);
    mProgramList.getSelectionModel().addListSelectionListener(new ListSelectionListener() {
        public void valueChanged(final ListSelectionEvent evt) {
            setProgramButtons(true, true);
        }
    });
    mProgramList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
    mProgramList.getColumnModel().getColumn(0).setMaxWidth(Sizes.dialogUnitXAsPixel(10, mProgramList));
    final JScrollPane scrollProgram = new JScrollPane(mProgramList);

    mChannelAdd = new JButton(Localizer.getLocalization(Localizer.I18N_ADD),
            Plugin.getPluginManager().getIconFromTheme(null, "actions", "document-new", 16));
    mChannelAdd.setToolTipText(mLocalizer.msg("addChannel", "Add channel"));
    mChannelAdd.setHorizontalAlignment(SwingConstants.LEFT);
    mChannelAdd.addActionListener(this);
    mChannelDel = new JButton(Localizer.getLocalization(Localizer.I18N_DELETE),
            Plugin.getPluginManager().getIconFromTheme(null, "actions", "edit-delete", 16));
    mChannelDel.setToolTipText(mLocalizer.msg("delChannel", "Delete channel"));
    mChannelDel.setHorizontalAlignment(SwingConstants.LEFT);
    mChannelDel.setEnabled(false);
    mChannelDel.addActionListener(this);
    mChannelEdit = new JButton(Localizer.getLocalization(Localizer.I18N_EDIT),
            Plugin.getPluginManager().getIconFromTheme(null, "actions", "document-edit", 16));
    mChannelEdit.setToolTipText(mLocalizer.msg("editChannel", "Edit channel"));
    mChannelEdit.setHorizontalAlignment(SwingConstants.LEFT);
    mChannelEdit.setEnabled(false);
    mChannelEdit.addActionListener(this);
    mProgramAdd = new JButton(Localizer.getLocalization(Localizer.I18N_ADD),
            Plugin.getPluginManager().getIconFromTheme(null, "actions", "document-new", 16));
    mProgramAdd.setToolTipText(mLocalizer.msg("addProgram", "Add program"));
    mProgramAdd.setHorizontalAlignment(SwingConstants.LEFT);
    mProgramAdd.setEnabled(false);
    mProgramAdd.addActionListener(this);
    mProgramDel = new JButton(Localizer.getLocalization(Localizer.I18N_DELETE),
            Plugin.getPluginManager().getIconFromTheme(null, "actions", "edit-delete", 16));
    mProgramDel.setToolTipText(mLocalizer.msg("delProgram", "Delete program"));
    mProgramDel.setHorizontalAlignment(SwingConstants.LEFT);
    mProgramDel.setEnabled(false);
    mProgramDel.addActionListener(this);
    mProgramEdit = new JButton(Localizer.getLocalization(Localizer.I18N_EDIT),
            Plugin.getPluginManager().getIconFromTheme(null, "actions", "document-edit", 16));
    mProgramEdit.setToolTipText(mLocalizer.msg("editProgram", "Edit program"));
    mProgramEdit.setHorizontalAlignment(SwingConstants.LEFT);
    mProgramEdit.setEnabled(false);
    mProgramEdit.addActionListener(this);

    int row = 2;
    builder.addLabel(Localizer.getLocalization(Localizer.I18N_CHANNEL), cc.xyw(2, row, 3));
    row += 2;
    builder.add(scrollChannel, cc.xywh(2, row, 1, 6));
    builder.add(mChannelAdd, cc.xy(4, row));
    row += 2;
    builder.add(mChannelDel, cc.xy(4, row));
    row += 2;
    builder.add(mChannelEdit, cc.xy(4, row));
    row += 3;
    builder.addLabel(Localizer.getLocalization(Localizer.I18N_PROGRAM), cc.xyw(2, row, 3));
    row += 2;
    builder.add(scrollProgram, cc.xywh(2, row, 1, 6));
    builder.add(mProgramAdd, cc.xy(4, row));
    row += 2;
    builder.add(mProgramDel, cc.xy(4, row));
    row += 2;
    builder.add(mProgramEdit, cc.xy(4, row));

    add(builder.getPanel(), BorderLayout.CENTER);

    loadChannel();
}