Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * Licensed to the Apache Software Foundation (ASF) under one
   * or more contributor license agreements. See the NOTICE file
   * distributed with this work for additional information
   * regarding copyright ownership. The ASF licenses this file
   * to you under the Apache License, Version 2.0 (the
   * "License"); you may not use this file except in compliance
   * with the License.  You may obtain a copy of the License at
   *
  *     http://www.apache.org/licenses/LICENSE-2.0
  *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
 package org.apache.marmotta.splash.common.ui;
 
 import java.awt.Font;
 import java.awt.Frame;
 import java.util.List;
 
 
 
 public class SelectionDialog {
 
     
     public static int select(String titleString messageString descriptionList<Optionoptionsint defaultOption) {
         final JDialog dialog = new JDialog((Frame)nulltitle);
         dialog.setModal(true);
         
         final AtomicInteger result = new AtomicInteger(Math.max(defaultOption,-1));
         
         JButton defaultBtn = null;
         
         final JPanel root = new JPanel(new GridBagLayout());
         root.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));
         dialog.getRootPane().setContentPane(root);
 
         JLabel lblMsg = new JLabel("<html>"+StringEscapeUtils.escapeHtml3(message).replaceAll("\\n""<br>"));
         lblMsg.setFont(lblMsg.getFont().deriveFont(., 16f));
         GridBagConstraints cLabel = new GridBagConstraints();
         cLabel.gridx = 0;
         cLabel.gridy = 0;
         cLabel.fill = .;
         cLabel.weightx = 1;
         cLabel.weighty = 0.5;
         cLabel.insets = new Insets(5, 5, 5, 5);
         root.add(lblMsgcLabel);
         
         JLabel lblDescr = new JLabel("<html>"+StringEscapeUtils.escapeHtml3(description).replaceAll("\\n""<br>"));
         cLabel.gridy++;
         cLabel.insets = new Insets(0, 5, 5, 5);
         root.add(lblDescrcLabel);
 
         // All the options
         cLabel.ipadx = 10;
         cLabel.ipady = 10;
         cLabel.insets = new Insets(5, 15, 0, 15);
         for (int i = 0; i < options.size(); i++) {
             cLabel.gridy++;
             
             final Option o = options.get(i);
             final JButton btn = new JButton("<html>"+StringEscapeUtils.escapeHtml3(o.label).replaceAll("\\n""<br>"), MessageDialog.loadIcon(o.icon));
             if (StringUtils.isNotBlank(o.info)) {
                 btn.setToolTipText("<html>"+StringEscapeUtils.escapeHtml3(o.info).replaceAll("\\n""<br>"));
             }
             
             btn.setHorizontalAlignment(.);
             btn.setVerticalTextPosition(.);
             btn.setHorizontalTextPosition(.);
             
             final int myAnswer = i;
             btn.addActionListener(new ActionListener() {
                 @Override
                 public void actionPerformed(ActionEvent e) {
                     result.set(myAnswer);
                     dialog.setVisible(false);
                 }
             });
            
            root.add(btncLabel);
            if (i == defaultOption) {
                dialog.getRootPane().setDefaultButton(btn);
                defaultBtn = btn;
            }
        }
        
        final Icon icon = MessageDialog.loadIcon() ;
        if (icon != null) {
            JLabel lblIcn = new JLabel(icon);
            GridBagConstraints cIcon = new GridBagConstraints();
            cIcon.gridx = 1;
            cIcon.gridy = 0;
            cIcon.gridheight = 2 + options.size();
            cIcon.fill = .;
            cIcon.weightx = 0;
            cIcon.weighty = 1;
            cIcon.anchor = .;
            cIcon.insets = new Insets(10, 5, 5, 0);
            root.add(lblIcncIcon);
        }
        
        final JButton close = new JButton("Cancel");
        close.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                result.set(-1);
                dialog.setVisible(false);
            }
        });
        GridBagConstraints cClose = new GridBagConstraints();
        cClose.gridx = 0;
        cClose.gridy = 2 + options.size();
        cClose.gridwidth = 2;
        cClose.weightx = 1;
        cClose.weighty = 0;
        cClose.insets = new Insets(15, 5, 5, 5);
        
        root.add(closecClose);
        if (defaultOption < 0) {
            dialog.getRootPane().setDefaultButton(close);
            defaultBtn = close;
        }
        
        dialog.pack();
        dialog.setLocationRelativeTo(null);
        defaultBtn.requestFocusInWindow();
        
        dialog.setVisible(true);
        dialog.dispose();
        return result.get();
    }
    
    public static class Option {
        private String labelinfo;
        private String icon;
        
        public Option(String label) {
            this(label""null);
        }
        
        public Option(String labelString info) {
            this(labelinfonull);
        }
        public Option(String labelString infoString icon) {
            this. = label;
            this. = info;
            this. = icon;
        }
        public String getLabel() {
            return ;
        }
        public void setLabel(String label) {
            this. = label;
        }
        public String getInfo() {
            return ;
        }
        public void setInfo(String info) {
            this. = info;
        }
        public String getIcon() {
            return ;
        }
        public void setIcon(String icon) {
            this. = icon;
        }
    }
    
    public static void main(String[] args) {
        final List<Optionoptions = Arrays.asList(
                new Option("Option1\nfoo"),
                new Option("Option2""this is \nalso valid"), 
                new Option("Option3""".));
        final int choice = select("Question""Please select""what do you prefer?"options, 1);
        if (choice < 0) {
            ..println("No coice was made!");
        } else {
            ..printf("Your choice was %d%n%s (%s)"choiceoptions.get(choice).options.get(choice).);
        }
    }
New to GrepCode? Check out our FAQ X