use of java.awt.FlowLayout in project gitblit by gitblit.
the class GitblitAuthority method getUI.
private Container getUI() {
userCertificatePanel = new UserCertificatePanel(this) {
private static final long serialVersionUID = 1L;
@Override
public Insets getInsets() {
return Utils.INSETS;
}
@Override
public boolean isAllowEmail() {
return mail.isReady();
}
@Override
public Date getDefaultExpiration() {
Calendar c = Calendar.getInstance();
c.add(Calendar.DATE, defaultDuration);
c.set(Calendar.HOUR_OF_DAY, 0);
c.set(Calendar.MINUTE, 0);
c.set(Calendar.SECOND, 0);
c.set(Calendar.MILLISECOND, 0);
return c.getTime();
}
@Override
public boolean saveUser(String username, UserCertificateModel ucm) {
return userService.updateUserModel(username, ucm.user);
}
@Override
public boolean newCertificate(UserCertificateModel ucm, X509Metadata metadata, boolean sendEmail) {
if (!prepareX509Infrastructure()) {
return false;
}
Date notAfter = metadata.notAfter;
setMetadataDefaults(metadata);
metadata.notAfter = notAfter;
// set user's specified OID values
UserModel user = ucm.user;
if (!StringUtils.isEmpty(user.organizationalUnit)) {
metadata.oids.put("OU", user.organizationalUnit);
}
if (!StringUtils.isEmpty(user.organization)) {
metadata.oids.put("O", user.organization);
}
if (!StringUtils.isEmpty(user.locality)) {
metadata.oids.put("L", user.locality);
}
if (!StringUtils.isEmpty(user.stateProvince)) {
metadata.oids.put("ST", user.stateProvince);
}
if (!StringUtils.isEmpty(user.countryCode)) {
metadata.oids.put("C", user.countryCode);
}
File caKeystoreFile = new File(folder, X509Utils.CA_KEY_STORE);
File zip = X509Utils.newClientBundle(user, metadata, caKeystoreFile, caKeystorePassword, GitblitAuthority.this);
// save latest expiration date
if (ucm.expires == null || metadata.notAfter.before(ucm.expires)) {
ucm.expires = metadata.notAfter;
}
updateAuthorityConfig(ucm);
// refresh user
ucm.certs = null;
int selectedIndex = table.getSelectedRow();
tableModel.fireTableDataChanged();
table.getSelectionModel().setSelectionInterval(selectedIndex, selectedIndex);
if (sendEmail) {
sendEmail(user, metadata, zip);
}
return true;
}
@Override
public boolean revoke(UserCertificateModel ucm, X509Certificate cert, RevocationReason reason) {
if (!prepareX509Infrastructure()) {
return false;
}
File caRevocationList = new File(folder, X509Utils.CA_REVOCATION_LIST);
File caKeystoreFile = new File(folder, X509Utils.CA_KEY_STORE);
if (X509Utils.revoke(cert, reason, caRevocationList, caKeystoreFile, caKeystorePassword, GitblitAuthority.this)) {
File certificatesConfigFile = new File(folder, X509Utils.CA_CONFIG);
FileBasedConfig config = new FileBasedConfig(certificatesConfigFile, FS.detect());
if (certificatesConfigFile.exists()) {
try {
config.load();
} catch (Exception e) {
Utils.showException(GitblitAuthority.this, e);
}
}
// add serial to revoked list
ucm.revoke(cert.getSerialNumber(), reason);
ucm.update(config);
try {
config.save();
} catch (Exception e) {
Utils.showException(GitblitAuthority.this, e);
}
// refresh user
ucm.certs = null;
int modelIndex = table.convertRowIndexToModel(table.getSelectedRow());
tableModel.fireTableDataChanged();
table.getSelectionModel().setSelectionInterval(modelIndex, modelIndex);
return true;
}
return false;
}
};
table = Utils.newTable(tableModel, Utils.DATE_FORMAT);
table.setRowSorter(defaultSorter);
table.setDefaultRenderer(CertificateStatus.class, new CertificateStatusRenderer());
table.getSelectionModel().addListSelectionListener(new ListSelectionListener() {
@Override
public void valueChanged(ListSelectionEvent e) {
if (e.getValueIsAdjusting()) {
return;
}
int row = table.getSelectedRow();
if (row < 0) {
return;
}
int modelIndex = table.convertRowIndexToModel(row);
UserCertificateModel ucm = tableModel.get(modelIndex);
if (ucm.certs == null) {
ucm.certs = findCerts(folder, ucm.user.username);
}
userCertificatePanel.setUserCertificateModel(ucm);
}
});
JPanel usersPanel = new JPanel(new BorderLayout()) {
private static final long serialVersionUID = 1L;
@Override
public Insets getInsets() {
return Utils.INSETS;
}
};
usersPanel.add(new HeaderPanel(Translation.get("gb.users"), "users_16x16.png"), BorderLayout.NORTH);
usersPanel.add(new JScrollPane(table), BorderLayout.CENTER);
usersPanel.setMinimumSize(new Dimension(400, 10));
certificateDefaultsButton = new JButton(new ImageIcon(getClass().getResource("/settings_16x16.png")));
certificateDefaultsButton.setFocusable(false);
certificateDefaultsButton.setToolTipText(Translation.get("gb.newCertificateDefaults"));
certificateDefaultsButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
X509Metadata metadata = new X509Metadata("whocares", "whocares");
File certificatesConfigFile = new File(folder, X509Utils.CA_CONFIG);
FileBasedConfig config = new FileBasedConfig(certificatesConfigFile, FS.detect());
NewCertificateConfig certificateConfig = null;
if (certificatesConfigFile.exists()) {
try {
config.load();
} catch (Exception x) {
Utils.showException(GitblitAuthority.this, x);
}
certificateConfig = NewCertificateConfig.KEY.parse(config);
certificateConfig.update(metadata);
}
InputVerifier verifier = new InputVerifier() {
@Override
public boolean verify(JComponent comp) {
boolean returnValue;
JTextField textField = (JTextField) comp;
try {
Integer.parseInt(textField.getText());
returnValue = true;
} catch (NumberFormatException e) {
returnValue = false;
}
return returnValue;
}
};
JTextField siteNameTF = new JTextField(20);
siteNameTF.setText(gitblitSettings.getString(Keys.web.siteName, "Gitblit"));
JPanel siteNamePanel = Utils.newFieldPanel(Translation.get("gb.siteName"), siteNameTF, Translation.get("gb.siteNameDescription"));
JTextField validityTF = new JTextField(4);
validityTF.setInputVerifier(verifier);
validityTF.setVerifyInputWhenFocusTarget(true);
validityTF.setText("" + certificateConfig.duration);
JPanel validityPanel = Utils.newFieldPanel(Translation.get("gb.validity"), validityTF, Translation.get("gb.duration.days").replace("{0}", "").trim());
JPanel p1 = new JPanel(new GridLayout(0, 1, 5, 2));
p1.add(siteNamePanel);
p1.add(validityPanel);
DefaultOidsPanel oids = new DefaultOidsPanel(metadata);
JPanel panel = new JPanel(new BorderLayout());
panel.add(p1, BorderLayout.NORTH);
panel.add(oids, BorderLayout.CENTER);
int result = JOptionPane.showConfirmDialog(GitblitAuthority.this, panel, Translation.get("gb.newCertificateDefaults"), JOptionPane.OK_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE, new ImageIcon(getClass().getResource("/settings_32x32.png")));
if (result == JOptionPane.OK_OPTION) {
try {
oids.update(metadata);
certificateConfig.duration = Integer.parseInt(validityTF.getText());
certificateConfig.store(config, metadata);
config.save();
Map<String, String> updates = new HashMap<String, String>();
updates.put(Keys.web.siteName, siteNameTF.getText());
gitblitSettings.saveSettings(updates);
} catch (Exception e1) {
Utils.showException(GitblitAuthority.this, e1);
}
}
}
});
newSSLCertificate = new JButton(new ImageIcon(getClass().getResource("/rosette_16x16.png")));
newSSLCertificate.setFocusable(false);
newSSLCertificate.setToolTipText(Translation.get("gb.newSSLCertificate"));
newSSLCertificate.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
Date defaultExpiration = new Date(System.currentTimeMillis() + 10 * TimeUtils.ONEYEAR);
NewSSLCertificateDialog dialog = new NewSSLCertificateDialog(GitblitAuthority.this, defaultExpiration);
dialog.setModal(true);
dialog.setVisible(true);
if (dialog.isCanceled()) {
return;
}
final Date expires = dialog.getExpiration();
final String hostname = dialog.getHostname();
final boolean serveCertificate = dialog.isServeCertificate();
AuthorityWorker worker = new AuthorityWorker(GitblitAuthority.this) {
@Override
protected Boolean doRequest() throws IOException {
if (!prepareX509Infrastructure()) {
return false;
}
// read CA private key and certificate
File caKeystoreFile = new File(folder, X509Utils.CA_KEY_STORE);
PrivateKey caPrivateKey = X509Utils.getPrivateKey(X509Utils.CA_ALIAS, caKeystoreFile, caKeystorePassword);
X509Certificate caCert = X509Utils.getCertificate(X509Utils.CA_ALIAS, caKeystoreFile, caKeystorePassword);
// generate new SSL certificate
X509Metadata metadata = new X509Metadata(hostname, caKeystorePassword);
setMetadataDefaults(metadata);
metadata.notAfter = expires;
File serverKeystoreFile = new File(folder, X509Utils.SERVER_KEY_STORE);
X509Certificate cert = X509Utils.newSSLCertificate(metadata, caPrivateKey, caCert, serverKeystoreFile, GitblitAuthority.this);
boolean hasCert = cert != null;
if (hasCert && serveCertificate) {
// update Gitblit https connector alias
Map<String, String> updates = new HashMap<String, String>();
updates.put(Keys.server.certificateAlias, metadata.commonName);
gitblitSettings.saveSettings(updates);
}
return hasCert;
}
@Override
protected void onSuccess() {
if (serveCertificate) {
JOptionPane.showMessageDialog(GitblitAuthority.this, MessageFormat.format(Translation.get("gb.sslCertificateGeneratedRestart"), hostname), Translation.get("gb.newSSLCertificate"), JOptionPane.INFORMATION_MESSAGE);
} else {
JOptionPane.showMessageDialog(GitblitAuthority.this, MessageFormat.format(Translation.get("gb.sslCertificateGenerated"), hostname), Translation.get("gb.newSSLCertificate"), JOptionPane.INFORMATION_MESSAGE);
}
}
};
worker.execute();
}
});
JButton emailBundle = new JButton(new ImageIcon(getClass().getResource("/mail_16x16.png")));
emailBundle.setFocusable(false);
emailBundle.setToolTipText(Translation.get("gb.emailCertificateBundle"));
emailBundle.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
int row = table.getSelectedRow();
if (row < 0) {
return;
}
int modelIndex = table.convertRowIndexToModel(row);
final UserCertificateModel ucm = tableModel.get(modelIndex);
if (ArrayUtils.isEmpty(ucm.certs)) {
JOptionPane.showMessageDialog(GitblitAuthority.this, MessageFormat.format(Translation.get("gb.pleaseGenerateClientCertificate"), ucm.user.getDisplayName()));
}
final File zip = new File(folder, X509Utils.CERTS + File.separator + ucm.user.username + File.separator + ucm.user.username + ".zip");
if (!zip.exists()) {
return;
}
AuthorityWorker worker = new AuthorityWorker(GitblitAuthority.this) {
@Override
protected Boolean doRequest() throws IOException {
X509Metadata metadata = new X509Metadata(ucm.user.username, "whocares");
metadata.serverHostname = gitblitSettings.getString(Keys.web.siteName, Constants.NAME);
if (StringUtils.isEmpty(metadata.serverHostname)) {
metadata.serverHostname = Constants.NAME;
}
metadata.userDisplayname = ucm.user.getDisplayName();
return sendEmail(ucm.user, metadata, zip);
}
@Override
protected void onSuccess() {
JOptionPane.showMessageDialog(GitblitAuthority.this, MessageFormat.format(Translation.get("gb.clientCertificateBundleSent"), ucm.user.getDisplayName()));
}
};
worker.execute();
}
});
JButton logButton = new JButton(new ImageIcon(getClass().getResource("/script_16x16.png")));
logButton.setFocusable(false);
logButton.setToolTipText(Translation.get("gb.log"));
logButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
File log = new File(folder, X509Utils.CERTS + File.separator + "log.txt");
if (log.exists()) {
String content = FileUtils.readContent(log, "\n");
JTextArea textarea = new JTextArea(content);
JScrollPane scrollPane = new JScrollPane(textarea);
scrollPane.setPreferredSize(new Dimension(700, 400));
JOptionPane.showMessageDialog(GitblitAuthority.this, scrollPane, log.getAbsolutePath(), JOptionPane.INFORMATION_MESSAGE);
}
}
});
final JTextField filterTextfield = new JTextField(15);
filterTextfield.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
filterUsers(filterTextfield.getText());
}
});
filterTextfield.addKeyListener(new KeyAdapter() {
@Override
public void keyReleased(KeyEvent e) {
filterUsers(filterTextfield.getText());
}
});
JToolBar buttonControls = new JToolBar(JToolBar.HORIZONTAL);
buttonControls.setFloatable(false);
buttonControls.add(certificateDefaultsButton);
buttonControls.add(newSSLCertificate);
buttonControls.add(emailBundle);
buttonControls.add(logButton);
JPanel userControls = new JPanel(new FlowLayout(FlowLayout.RIGHT, Utils.MARGIN, Utils.MARGIN));
userControls.add(new JLabel(Translation.get("gb.filter")));
userControls.add(filterTextfield);
JPanel topPanel = new JPanel(new BorderLayout(0, 0));
topPanel.add(buttonControls, BorderLayout.WEST);
topPanel.add(userControls, BorderLayout.EAST);
JPanel leftPanel = new JPanel(new BorderLayout());
leftPanel.add(topPanel, BorderLayout.NORTH);
leftPanel.add(usersPanel, BorderLayout.CENTER);
userCertificatePanel.setMinimumSize(new Dimension(375, 10));
JLabel statusLabel = new JLabel();
statusLabel.setHorizontalAlignment(SwingConstants.RIGHT);
if (X509Utils.unlimitedStrength) {
statusLabel.setText("JCE Unlimited Strength Jurisdiction Policy");
} else {
statusLabel.setText("JCE Standard Encryption Policy");
}
JPanel root = new JPanel(new BorderLayout()) {
private static final long serialVersionUID = 1L;
@Override
public Insets getInsets() {
return Utils.INSETS;
}
};
JSplitPane splitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, leftPanel, userCertificatePanel);
splitPane.setDividerLocation(1d);
root.add(splitPane, BorderLayout.CENTER);
root.add(statusLabel, BorderLayout.SOUTH);
return root;
}
use of java.awt.FlowLayout in project gitblit by gitblit.
the class RegistrationsDialog method initialize.
private void initialize() {
NameRenderer nameRenderer = new NameRenderer();
model = new RegistrationsTableModel(registrations);
registrationsTable = Utils.newTable(model, Utils.DATE_FORMAT);
String id = registrationsTable.getColumnName(RegistrationsTableModel.Columns.Name.ordinal());
registrationsTable.getColumn(id).setCellRenderer(nameRenderer);
registrationsTable.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
if (e.getClickCount() == 2) {
login();
}
}
});
final JButton create = new JButton(Translation.get("gb.create"));
create.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent event) {
create();
}
});
final JButton login = new JButton(Translation.get("gb.login"));
login.setEnabled(false);
login.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent event) {
login();
}
});
final JButton edit = new JButton(Translation.get("gb.edit"));
edit.setEnabled(false);
edit.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent event) {
edit();
}
});
final JButton delete = new JButton(Translation.get("gb.delete"));
delete.setEnabled(false);
delete.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent event) {
delete();
}
});
registrationsTable.getSelectionModel().addListSelectionListener(new ListSelectionListener() {
@Override
public void valueChanged(ListSelectionEvent e) {
if (e.getValueIsAdjusting()) {
return;
}
boolean singleSelection = registrationsTable.getSelectedRowCount() == 1;
boolean selected = registrationsTable.getSelectedRow() > -1;
login.setEnabled(singleSelection);
edit.setEnabled(singleSelection);
delete.setEnabled(selected);
}
});
JPanel controls = new JPanel(new FlowLayout(FlowLayout.CENTER, 5, 0));
controls.add(create);
controls.add(login);
controls.add(edit);
controls.add(delete);
final Insets insets = new Insets(5, 5, 5, 5);
JPanel centerPanel = new JPanel(new BorderLayout(5, 5)) {
private static final long serialVersionUID = 1L;
@Override
public Insets getInsets() {
return insets;
}
};
centerPanel.add(new HeaderPanel(Translation.get("gb.servers"), null), BorderLayout.NORTH);
centerPanel.add(new JScrollPane(registrationsTable), BorderLayout.CENTER);
centerPanel.add(controls, BorderLayout.SOUTH);
getContentPane().setLayout(new BorderLayout(5, 5));
getContentPane().add(centerPanel, BorderLayout.CENTER);
}
use of java.awt.FlowLayout in project gitblit by gitblit.
the class SearchDialog method initialize.
private void initialize() {
prev = new JButton("<");
prev.setToolTipText(Translation.get("gb.pagePrevious"));
prev.setEnabled(false);
prev.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
search(--page);
}
});
next = new JButton(">");
next.setToolTipText(Translation.get("gb.pageNext"));
next.setEnabled(false);
next.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
search(++page);
}
});
final JButton search = new JButton(Translation.get(isSearch ? "gb.search" : "gb.refresh"));
search.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
search(0);
}
});
final JButton viewCommit = new JButton(Translation.get("gb.view"));
viewCommit.setEnabled(false);
viewCommit.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
viewCommit();
}
});
final JButton viewCommitDiff = new JButton(Translation.get("gb.commitdiff"));
viewCommitDiff.setEnabled(false);
viewCommitDiff.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
viewCommitDiff();
}
});
final JButton viewTree = new JButton(Translation.get("gb.tree"));
viewTree.setEnabled(false);
viewTree.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
viewTree();
}
});
JPanel controls = new JPanel(new FlowLayout(FlowLayout.CENTER, Utils.MARGIN, 0));
controls.add(viewCommit);
controls.add(viewCommitDiff);
controls.add(viewTree);
NameRenderer nameRenderer = new NameRenderer();
tableModel = new FeedEntryTableModel();
header = new HeaderPanel(Translation.get(isSearch ? "gb.search" : "gb.log"), isSearch ? "search-icon.png" : "commit_changes_16x16.png");
table = Utils.newTable(tableModel, Utils.DATE_FORMAT);
String name = table.getColumnName(FeedEntryTableModel.Columns.Author.ordinal());
table.getColumn(name).setCellRenderer(nameRenderer);
name = table.getColumnName(FeedEntryTableModel.Columns.Repository.ordinal());
table.getColumn(name).setCellRenderer(nameRenderer);
name = table.getColumnName(FeedEntryTableModel.Columns.Branch.ordinal());
table.getColumn(name).setCellRenderer(new BranchRenderer());
name = table.getColumnName(FeedEntryTableModel.Columns.Message.ordinal());
table.getColumn(name).setCellRenderer(new MessageRenderer());
table.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
if (e.getClickCount() == 2) {
if (e.isControlDown()) {
viewCommitDiff();
} else {
viewCommit();
}
}
}
});
table.getSelectionModel().addListSelectionListener(new ListSelectionListener() {
@Override
public void valueChanged(ListSelectionEvent e) {
if (e.getValueIsAdjusting()) {
return;
}
boolean singleSelection = table.getSelectedRowCount() == 1;
viewCommit.setEnabled(singleSelection);
viewCommitDiff.setEnabled(singleSelection);
viewTree.setEnabled(singleSelection);
}
});
repositorySelector = new JComboBox(gitblit.getRepositories().toArray());
repositorySelector.setRenderer(nameRenderer);
repositorySelector.setForeground(nameRenderer.getForeground());
repositorySelector.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent event) {
// repopulate the branch list based on repository selection
// preserve branch selection, if possible
String selectedBranch = null;
if (branchSelector.getSelectedIndex() > -1) {
selectedBranch = branchSelector.getSelectedItem().toString();
}
updateBranches();
if (StringUtils.isEmpty(selectedBranch)) {
// do not select branch
branchSelector.setSelectedIndex(-1);
} else {
if (branchChoices.getIndexOf(selectedBranch) > -1) {
// select branch
branchChoices.setSelectedItem(selectedBranch);
} else {
// branch does not exist, do not select branch
branchSelector.setSelectedIndex(-1);
}
}
}
});
branchChoices = new DefaultComboBoxModel();
branchSelector = new JComboBox(branchChoices);
branchSelector.setRenderer(new BranchRenderer());
searchTypeSelector = new JComboBox(Constants.SearchType.values());
searchTypeSelector.setSelectedItem(Constants.SearchType.COMMIT);
maxHitsSelector = new JComboBox(new Integer[] { 25, 50, 75, 100 });
maxHitsSelector.setSelectedIndex(0);
searchFragment = new JTextField(25);
searchFragment.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent event) {
search(0);
}
});
JPanel queryPanel = new JPanel(new FlowLayout(FlowLayout.LEFT, Utils.MARGIN, 0));
queryPanel.add(new JLabel(Translation.get("gb.repository")));
queryPanel.add(repositorySelector);
queryPanel.add(new JLabel(Translation.get("gb.branch")));
queryPanel.add(branchSelector);
if (isSearch) {
queryPanel.add(new JLabel(Translation.get("gb.type")));
queryPanel.add(searchTypeSelector);
}
queryPanel.add(new JLabel(Translation.get("gb.maxHits")));
queryPanel.add(maxHitsSelector);
JPanel actionsPanel = new JPanel(new FlowLayout(FlowLayout.LEFT, Utils.MARGIN, 0));
actionsPanel.add(search);
actionsPanel.add(prev);
actionsPanel.add(next);
JPanel northControls = new JPanel(new BorderLayout(Utils.MARGIN, Utils.MARGIN));
northControls.add(queryPanel, BorderLayout.WEST);
if (isSearch) {
northControls.add(searchFragment, BorderLayout.CENTER);
}
northControls.add(actionsPanel, BorderLayout.EAST);
JPanel northPanel = new JPanel(new BorderLayout(0, Utils.MARGIN));
northPanel.add(header, BorderLayout.NORTH);
northPanel.add(northControls, BorderLayout.CENTER);
JPanel contentPanel = new JPanel() {
private static final long serialVersionUID = 1L;
@Override
public Insets getInsets() {
return Utils.INSETS;
}
};
contentPanel.setLayout(new BorderLayout(Utils.MARGIN, Utils.MARGIN));
contentPanel.add(northPanel, BorderLayout.NORTH);
contentPanel.add(new JScrollPane(table), BorderLayout.CENTER);
contentPanel.add(controls, BorderLayout.SOUTH);
setLayout(new BorderLayout());
add(contentPanel, BorderLayout.CENTER);
addWindowListener(new WindowAdapter() {
@Override
public void windowOpened(WindowEvent event) {
if (isSearch) {
searchFragment.requestFocus();
} else {
search(0);
}
}
@Override
public void windowActivated(WindowEvent event) {
if (isSearch) {
searchFragment.requestFocus();
}
}
});
}
use of java.awt.FlowLayout in project gitblit by gitblit.
the class UsersPanel method initialize.
private void initialize() {
JButton refreshUsers = new JButton(Translation.get("gb.refresh"));
refreshUsers.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
refreshUsers();
}
});
JButton createUser = new JButton(Translation.get("gb.create"));
createUser.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
createUser();
}
});
final JButton editUser = new JButton(Translation.get("gb.edit"));
editUser.setEnabled(false);
editUser.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
editUser(getSelectedUsers().get(0));
}
});
final JButton delUser = new JButton(Translation.get("gb.delete"));
delUser.setEnabled(false);
delUser.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
deleteUsers(getSelectedUsers());
}
});
NameRenderer nameRenderer = new NameRenderer();
tableModel = new UsersTableModel();
defaultSorter = new TableRowSorter<UsersTableModel>(tableModel);
table = Utils.newTable(tableModel, Utils.DATE_FORMAT);
String name = table.getColumnName(UsersTableModel.Columns.Name.ordinal());
table.getColumn(name).setCellRenderer(nameRenderer);
int w = 130;
name = table.getColumnName(UsersTableModel.Columns.Type.ordinal());
table.getColumn(name).setMinWidth(w);
table.getColumn(name).setMaxWidth(w);
name = table.getColumnName(UsersTableModel.Columns.Teams.ordinal());
table.getColumn(name).setMinWidth(w);
table.getColumn(name).setMaxWidth(w);
name = table.getColumnName(UsersTableModel.Columns.Repositories.ordinal());
table.getColumn(name).setMinWidth(w);
table.getColumn(name).setMaxWidth(w);
table.setRowSorter(defaultSorter);
table.getRowSorter().toggleSortOrder(UsersTableModel.Columns.Name.ordinal());
table.getSelectionModel().addListSelectionListener(new ListSelectionListener() {
@Override
public void valueChanged(ListSelectionEvent e) {
if (e.getValueIsAdjusting()) {
return;
}
boolean selected = table.getSelectedRow() > -1;
boolean singleSelection = table.getSelectedRows().length == 1;
editUser.setEnabled(singleSelection && selected);
delUser.setEnabled(selected);
}
});
table.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
if (e.getClickCount() == 2) {
editUser(getSelectedUsers().get(0));
}
}
});
filterTextfield = new JTextField();
filterTextfield.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
filterUsers(filterTextfield.getText());
}
});
filterTextfield.addKeyListener(new KeyAdapter() {
@Override
public void keyReleased(KeyEvent e) {
filterUsers(filterTextfield.getText());
}
});
JPanel userFilterPanel = new JPanel(new BorderLayout(Utils.MARGIN, Utils.MARGIN));
userFilterPanel.add(new JLabel(Translation.get("gb.filter")), BorderLayout.WEST);
userFilterPanel.add(filterTextfield, BorderLayout.CENTER);
JPanel userTablePanel = new JPanel(new BorderLayout(Utils.MARGIN, Utils.MARGIN));
userTablePanel.add(userFilterPanel, BorderLayout.NORTH);
userTablePanel.add(new JScrollPane(table), BorderLayout.CENTER);
JPanel userControls = new JPanel(new FlowLayout(FlowLayout.CENTER, 5, 0));
userControls.add(refreshUsers);
userControls.add(createUser);
userControls.add(editUser);
userControls.add(delUser);
setLayout(new BorderLayout(Utils.MARGIN, Utils.MARGIN));
header = new HeaderPanel(Translation.get("gb.users"), "user_16x16.png");
add(header, BorderLayout.NORTH);
add(userTablePanel, BorderLayout.CENTER);
add(userControls, BorderLayout.SOUTH);
}
use of java.awt.FlowLayout in project gitblit by gitblit.
the class FeedsPanel method initialize.
private void initialize() {
prev = new JButton("<");
prev.setToolTipText(Translation.get("gb.pagePrevious"));
prev.setEnabled(false);
prev.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
refreshFeeds(--page);
}
});
next = new JButton(">");
next.setToolTipText(Translation.get("gb.pageNext"));
next.setEnabled(false);
next.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
refreshFeeds(++page);
}
});
JButton refreshFeeds = new JButton(Translation.get("gb.refresh"));
refreshFeeds.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
refreshFeeds(0);
}
});
final JButton viewCommit = new JButton(Translation.get("gb.view"));
viewCommit.setEnabled(false);
viewCommit.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
viewCommit();
}
});
final JButton viewCommitDiff = new JButton(Translation.get("gb.commitdiff"));
viewCommitDiff.setEnabled(false);
viewCommitDiff.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
viewCommitDiff();
}
});
final JButton viewTree = new JButton(Translation.get("gb.tree"));
viewTree.setEnabled(false);
viewTree.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
viewTree();
}
});
JButton subscribeFeeds = new JButton(Translation.get("gb.subscribe") + "...");
subscribeFeeds.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
subscribeFeeds(gitblit.getAvailableFeeds());
}
});
JPanel controls = new JPanel(new FlowLayout(FlowLayout.CENTER, Utils.MARGIN, 0));
controls.add(refreshFeeds);
controls.add(subscribeFeeds);
controls.add(viewCommit);
controls.add(viewCommitDiff);
controls.add(viewTree);
NameRenderer nameRenderer = new NameRenderer();
tableModel = new FeedEntryTableModel();
header = new HeaderPanel(Translation.get("gb.activity"), "feed_16x16.png");
table = Utils.newTable(tableModel, Utils.DATE_FORMAT);
defaultSorter = new TableRowSorter<FeedEntryTableModel>(tableModel);
String name = table.getColumnName(FeedEntryTableModel.Columns.Author.ordinal());
table.getColumn(name).setCellRenderer(nameRenderer);
name = table.getColumnName(FeedEntryTableModel.Columns.Repository.ordinal());
table.getColumn(name).setCellRenderer(nameRenderer);
name = table.getColumnName(FeedEntryTableModel.Columns.Branch.ordinal());
table.getColumn(name).setCellRenderer(new BranchRenderer());
name = table.getColumnName(FeedEntryTableModel.Columns.Message.ordinal());
table.getColumn(name).setCellRenderer(new MessageRenderer(gitblit));
table.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
if (e.getClickCount() == 2) {
if (e.isControlDown()) {
viewCommitDiff();
} else {
viewCommit();
}
}
}
});
table.getSelectionModel().addListSelectionListener(new ListSelectionListener() {
@Override
public void valueChanged(ListSelectionEvent e) {
if (e.getValueIsAdjusting()) {
return;
}
boolean singleSelection = table.getSelectedRowCount() == 1;
viewCommit.setEnabled(singleSelection);
viewCommitDiff.setEnabled(singleSelection);
viewTree.setEnabled(singleSelection);
}
});
repositoryChoices = new DefaultComboBoxModel();
repositorySelector = new JComboBox(repositoryChoices);
repositorySelector.setRenderer(nameRenderer);
repositorySelector.setForeground(nameRenderer.getForeground());
repositorySelector.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent event) {
// repopulate the author list based on repository selection
// preserve author selection, if possible
String selectedAuthor = null;
if (authorSelector.getSelectedIndex() > -1) {
selectedAuthor = authorSelector.getSelectedItem().toString();
}
updateAuthors();
if (selectedAuthor != null) {
if (authorChoices.getIndexOf(selectedAuthor) > -1) {
authorChoices.setSelectedItem(selectedAuthor);
}
}
filterFeeds();
}
});
authorChoices = new DefaultComboBoxModel();
authorSelector = new JComboBox(authorChoices);
authorSelector.setRenderer(nameRenderer);
authorSelector.setForeground(nameRenderer.getForeground());
authorSelector.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent event) {
filterFeeds();
}
});
JPanel northControls = new JPanel(new FlowLayout(FlowLayout.LEFT, Utils.MARGIN, 0));
northControls.add(new JLabel(Translation.get("gb.repository")));
northControls.add(repositorySelector);
northControls.add(new JLabel(Translation.get("gb.author")));
northControls.add(authorSelector);
// northControls.add(prev);
// northControls.add(next);
JPanel northPanel = new JPanel(new BorderLayout(0, Utils.MARGIN));
northPanel.add(header, BorderLayout.NORTH);
northPanel.add(northControls, BorderLayout.CENTER);
setLayout(new BorderLayout(Utils.MARGIN, Utils.MARGIN));
add(northPanel, BorderLayout.NORTH);
add(new JScrollPane(table), BorderLayout.CENTER);
add(controls, BorderLayout.SOUTH);
}
Aggregations