Working Caps Extractor.
This commit is contained in:
commit
ad9cf648b0
12 changed files with 616 additions and 0 deletions
76
.gitignore
vendored
Normal file
76
.gitignore
vendored
Normal file
|
@ -0,0 +1,76 @@
|
||||||
|
# Created by https://www.gitignore.io
|
||||||
|
|
||||||
|
### Intellij ###
|
||||||
|
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm
|
||||||
|
|
||||||
|
*.iml
|
||||||
|
|
||||||
|
## Directory-based project format:
|
||||||
|
.idea/
|
||||||
|
# if you remove the above rule, at least ignore the following:
|
||||||
|
|
||||||
|
# User-specific stuff:
|
||||||
|
# .idea/workspace.xml
|
||||||
|
# .idea/tasks.xml
|
||||||
|
# .idea/dictionaries
|
||||||
|
|
||||||
|
# Sensitive or high-churn files:
|
||||||
|
# .idea/dataSources.ids
|
||||||
|
# .idea/dataSources.xml
|
||||||
|
# .idea/sqlDataSources.xml
|
||||||
|
# .idea/dynamic.xml
|
||||||
|
# .idea/uiDesigner.xml
|
||||||
|
|
||||||
|
# Gradle:
|
||||||
|
# .idea/gradle.xml
|
||||||
|
# .idea/libraries
|
||||||
|
|
||||||
|
# Mongo Explorer plugin:
|
||||||
|
# .idea/mongoSettings.xml
|
||||||
|
|
||||||
|
## File-based project format:
|
||||||
|
*.ipr
|
||||||
|
*.iws
|
||||||
|
|
||||||
|
## Plugin-specific files:
|
||||||
|
|
||||||
|
# IntelliJ
|
||||||
|
/out/
|
||||||
|
|
||||||
|
# mpeltonen/sbt-idea plugin
|
||||||
|
.idea_modules/
|
||||||
|
|
||||||
|
# JIRA plugin
|
||||||
|
atlassian-ide-plugin.xml
|
||||||
|
|
||||||
|
# Crashlytics plugin (for Android Studio and IntelliJ)
|
||||||
|
com_crashlytics_export_strings.xml
|
||||||
|
crashlytics.properties
|
||||||
|
crashlytics-build.properties
|
||||||
|
|
||||||
|
|
||||||
|
### Gradle ###
|
||||||
|
.gradle
|
||||||
|
build/
|
||||||
|
|
||||||
|
# Ignore Gradle GUI config
|
||||||
|
gradle-app.setting
|
||||||
|
|
||||||
|
# Avoid ignoring Gradle wrapper jar file (.jar files are usually ignored)
|
||||||
|
!gradle-wrapper.jar
|
||||||
|
|
||||||
|
|
||||||
|
### Java ###
|
||||||
|
*.class
|
||||||
|
|
||||||
|
# Mobile Tools for Java (J2ME)
|
||||||
|
.mtj.tmp/
|
||||||
|
|
||||||
|
# Package Files #
|
||||||
|
*.jar
|
||||||
|
*.war
|
||||||
|
*.ear
|
||||||
|
|
||||||
|
# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
|
||||||
|
hs_err_pid*
|
||||||
|
|
74
build.gradle
Normal file
74
build.gradle
Normal file
|
@ -0,0 +1,74 @@
|
||||||
|
apply plugin: "idea"
|
||||||
|
apply plugin: "java"
|
||||||
|
|
||||||
|
repositories {
|
||||||
|
mavenCentral()
|
||||||
|
}
|
||||||
|
|
||||||
|
dependencies {
|
||||||
|
compile "com.intellij:forms_rt:7.0.3", 'org.apache.commons:commons-lang3:3.4',
|
||||||
|
'com.jgoodies:jgoodies-common:1.7.0', 'com.intellij:annotations:12.0'
|
||||||
|
runtime "com.intellij:forms_rt:7.0.3", 'org.apache.commons:commons-lang3:3.4',
|
||||||
|
'com.jgoodies:jgoodies-common:1.7.0', 'com.intellij:annotations:12.0'
|
||||||
|
}
|
||||||
|
|
||||||
|
def jarPackage(artifactName, artifactVersion, artifactClass) {
|
||||||
|
if (artifactVersion == "" || artifactVersion == null)
|
||||||
|
artifactVersion = "1.0.0"
|
||||||
|
|
||||||
|
int lastDotIndex = artifactName.lastIndexOf('.')
|
||||||
|
String name
|
||||||
|
if (lastDotIndex != -1)
|
||||||
|
name = artifactName.substring(lastDotIndex + 1, artifactName.length())
|
||||||
|
else
|
||||||
|
name = artifactName
|
||||||
|
|
||||||
|
|
||||||
|
return tasks.create("jar_${name}", Jar) {
|
||||||
|
baseName = artifactName
|
||||||
|
version = artifactVersion
|
||||||
|
String className
|
||||||
|
|
||||||
|
if (artifactClass == "" || artifactClass == null)
|
||||||
|
className = baseName.capitalize()
|
||||||
|
else
|
||||||
|
className = artifactClass
|
||||||
|
|
||||||
|
from(sourceSets.main.output) {
|
||||||
|
int firstDotIndex = baseName.indexOf('.')
|
||||||
|
String includePath
|
||||||
|
if (firstDotIndex != -1)
|
||||||
|
includePath = baseName.substring(0, firstDotIndex)
|
||||||
|
else
|
||||||
|
includePath = baseName
|
||||||
|
include "$includePath/**"
|
||||||
|
}
|
||||||
|
|
||||||
|
from {
|
||||||
|
configurations.compile.collect {
|
||||||
|
it.isDirectory() ? it : zipTree(it)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// For sources :
|
||||||
|
// from sourceSets.main.allSource
|
||||||
|
|
||||||
|
manifest {
|
||||||
|
attributes "Implementation-Title": "$className",
|
||||||
|
"Implementation-Version": "$version",
|
||||||
|
"Main-Class": "$baseName.$className"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
def jarPackage(artifactName, artifactVersion) {
|
||||||
|
return jarPackage(artifactName, artifactVersion, "")
|
||||||
|
}
|
||||||
|
|
||||||
|
def jarPackage(artifactName) {
|
||||||
|
return jarPackage(artifactName, "")
|
||||||
|
}
|
||||||
|
|
||||||
|
artifacts {
|
||||||
|
archives jarPackage("info.augendre.caps_extractor", "0.1.0", "MainWindow")
|
||||||
|
}
|
21
src/main/java/info/augendre/caps_extractor/AboutAction.java
Normal file
21
src/main/java/info/augendre/caps_extractor/AboutAction.java
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
package info.augendre.caps_extractor;
|
||||||
|
|
||||||
|
import javax.swing.*;
|
||||||
|
import java.awt.event.ActionEvent;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Created by Gabriel.
|
||||||
|
*/
|
||||||
|
public class AboutAction extends AbstractAction {
|
||||||
|
public AboutAction() {
|
||||||
|
super(I18nSupport.translate("plain.about_title"));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void actionPerformed(ActionEvent e) {
|
||||||
|
JDialog about = new AboutDialog();
|
||||||
|
about.pack();
|
||||||
|
about.setLocationRelativeTo(null);
|
||||||
|
about.setVisible(true);
|
||||||
|
}
|
||||||
|
}
|
64
src/main/java/info/augendre/caps_extractor/AboutDialog.form
Normal file
64
src/main/java/info/augendre/caps_extractor/AboutDialog.form
Normal file
|
@ -0,0 +1,64 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<form xmlns="http://www.intellij.com/uidesigner/form/" version="1" bind-to-class="info.augendre.caps_extractor.AboutDialog">
|
||||||
|
<grid id="cbd77" binding="contentPane" layout-manager="GridLayoutManager" row-count="2" column-count="1" same-size-horizontally="false" same-size-vertically="false" hgap="-1" vgap="-1">
|
||||||
|
<margin top="10" left="10" bottom="10" right="10"/>
|
||||||
|
<constraints>
|
||||||
|
<xy x="48" y="54" width="436" height="297"/>
|
||||||
|
</constraints>
|
||||||
|
<properties/>
|
||||||
|
<border type="none"/>
|
||||||
|
<children>
|
||||||
|
<grid id="94766" layout-manager="GridLayoutManager" row-count="1" column-count="2" same-size-horizontally="false" same-size-vertically="false" hgap="-1" vgap="-1">
|
||||||
|
<margin top="0" left="0" bottom="0" right="0"/>
|
||||||
|
<constraints>
|
||||||
|
<grid row="1" column="0" row-span="1" col-span="1" vsize-policy="1" hsize-policy="3" anchor="0" fill="3" indent="0" use-parent-layout="false"/>
|
||||||
|
</constraints>
|
||||||
|
<properties/>
|
||||||
|
<border type="none"/>
|
||||||
|
<children>
|
||||||
|
<hspacer id="98af6">
|
||||||
|
<constraints>
|
||||||
|
<grid row="0" column="0" row-span="1" col-span="1" vsize-policy="1" hsize-policy="6" anchor="0" fill="1" indent="0" use-parent-layout="false"/>
|
||||||
|
</constraints>
|
||||||
|
</hspacer>
|
||||||
|
<grid id="9538f" layout-manager="GridLayoutManager" row-count="1" column-count="1" same-size-horizontally="false" same-size-vertically="false" hgap="-1" vgap="-1">
|
||||||
|
<margin top="0" left="0" bottom="0" right="0"/>
|
||||||
|
<constraints>
|
||||||
|
<grid row="0" column="1" row-span="1" col-span="1" vsize-policy="3" hsize-policy="3" anchor="0" fill="3" indent="0" use-parent-layout="false"/>
|
||||||
|
</constraints>
|
||||||
|
<properties/>
|
||||||
|
<border type="none"/>
|
||||||
|
<children>
|
||||||
|
<component id="e7465" class="javax.swing.JButton" binding="buttonOK">
|
||||||
|
<constraints>
|
||||||
|
<grid row="0" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="3" anchor="0" fill="1" indent="0" use-parent-layout="false"/>
|
||||||
|
</constraints>
|
||||||
|
<properties>
|
||||||
|
<text value="OK"/>
|
||||||
|
</properties>
|
||||||
|
</component>
|
||||||
|
</children>
|
||||||
|
</grid>
|
||||||
|
</children>
|
||||||
|
</grid>
|
||||||
|
<grid id="e3588" layout-manager="GridLayoutManager" row-count="1" column-count="1" same-size-horizontally="false" same-size-vertically="false" hgap="-1" vgap="-1">
|
||||||
|
<margin top="0" left="0" bottom="0" right="0"/>
|
||||||
|
<constraints>
|
||||||
|
<grid row="0" column="0" row-span="1" col-span="1" vsize-policy="3" hsize-policy="3" anchor="0" fill="3" indent="0" use-parent-layout="false"/>
|
||||||
|
</constraints>
|
||||||
|
<properties/>
|
||||||
|
<border type="none"/>
|
||||||
|
<children>
|
||||||
|
<component id="b25dc" class="javax.swing.JLabel" binding="textLabel">
|
||||||
|
<constraints>
|
||||||
|
<grid row="0" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="0" anchor="8" fill="0" indent="0" use-parent-layout="false"/>
|
||||||
|
</constraints>
|
||||||
|
<properties>
|
||||||
|
<text value="Label"/>
|
||||||
|
</properties>
|
||||||
|
</component>
|
||||||
|
</children>
|
||||||
|
</grid>
|
||||||
|
</children>
|
||||||
|
</grid>
|
||||||
|
</form>
|
93
src/main/java/info/augendre/caps_extractor/AboutDialog.java
Normal file
93
src/main/java/info/augendre/caps_extractor/AboutDialog.java
Normal file
|
@ -0,0 +1,93 @@
|
||||||
|
package info.augendre.caps_extractor;
|
||||||
|
|
||||||
|
import com.intellij.uiDesigner.core.GridConstraints;
|
||||||
|
import com.intellij.uiDesigner.core.GridLayoutManager;
|
||||||
|
import com.intellij.uiDesigner.core.Spacer;
|
||||||
|
|
||||||
|
import javax.swing.*;
|
||||||
|
import java.awt.*;
|
||||||
|
import java.awt.event.*;
|
||||||
|
import java.util.ResourceBundle;
|
||||||
|
|
||||||
|
public class AboutDialog extends JDialog {
|
||||||
|
private JPanel contentPane;
|
||||||
|
private JButton buttonOK;
|
||||||
|
private JLabel textLabel;
|
||||||
|
|
||||||
|
public AboutDialog() {
|
||||||
|
setContentPane(contentPane);
|
||||||
|
setModal(true);
|
||||||
|
getRootPane().setDefaultButton(buttonOK);
|
||||||
|
|
||||||
|
this.setTitle(I18nSupport.translate("plain.about_title"));
|
||||||
|
|
||||||
|
buttonOK.addActionListener(e -> onOK());
|
||||||
|
|
||||||
|
textLabel.setText("<HTML>" +
|
||||||
|
"<p><strong>" + I18nSupport.translate("plain.dev") + " </strong>: Gabriel Augendre" +
|
||||||
|
"<gabriel@augendre.info></p>" +
|
||||||
|
"</HTML>");
|
||||||
|
|
||||||
|
// call onCancel() when cross is clicked
|
||||||
|
setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
|
||||||
|
addWindowListener(new WindowAdapter() {
|
||||||
|
public void windowClosing(WindowEvent e) {
|
||||||
|
onCancel();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// call onCancel() on ESCAPE
|
||||||
|
contentPane.registerKeyboardAction(e -> onCancel(), KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0), JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void onOK() {
|
||||||
|
dispose();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void onCancel() {
|
||||||
|
dispose();
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
// GUI initializer generated by IntelliJ IDEA GUI Designer
|
||||||
|
// >>> IMPORTANT!! <<<
|
||||||
|
// DO NOT EDIT OR ADD ANY CODE HERE!
|
||||||
|
$$$setupUI$$$();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Method generated by IntelliJ IDEA GUI Designer
|
||||||
|
* >>> IMPORTANT!! <<<
|
||||||
|
* DO NOT edit this method OR call it in your code!
|
||||||
|
*
|
||||||
|
* @noinspection ALL
|
||||||
|
*/
|
||||||
|
private void $$$setupUI$$$() {
|
||||||
|
contentPane = new JPanel();
|
||||||
|
contentPane.setLayout(new GridLayoutManager(2, 1, new Insets(10, 10, 10, 10), -1, -1));
|
||||||
|
final JPanel panel1 = new JPanel();
|
||||||
|
panel1.setLayout(new GridLayoutManager(1, 2, new Insets(0, 0, 0, 0), -1, -1));
|
||||||
|
contentPane.add(panel1, new GridConstraints(1, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_BOTH, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, 1, null, null, null, 0, false));
|
||||||
|
final Spacer spacer1 = new Spacer();
|
||||||
|
panel1.add(spacer1, new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, 1, null, null, null, 0, false));
|
||||||
|
final JPanel panel2 = new JPanel();
|
||||||
|
panel2.setLayout(new GridLayoutManager(1, 1, new Insets(0, 0, 0, 0), -1, -1));
|
||||||
|
panel1.add(panel2, new GridConstraints(0, 1, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_BOTH, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, null, null, null, 0, false));
|
||||||
|
buttonOK = new JButton();
|
||||||
|
buttonOK.setText("OK");
|
||||||
|
panel2.add(buttonOK, new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false));
|
||||||
|
final JPanel panel3 = new JPanel();
|
||||||
|
panel3.setLayout(new GridLayoutManager(1, 1, new Insets(0, 0, 0, 0), -1, -1));
|
||||||
|
contentPane.add(panel3, new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_BOTH, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, null, null, null, 0, false));
|
||||||
|
textLabel = new JLabel();
|
||||||
|
textLabel.setText("Label");
|
||||||
|
panel3.add(textLabel, new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @noinspection ALL
|
||||||
|
*/
|
||||||
|
public JComponent $$$getRootComponent$$$() {
|
||||||
|
return contentPane;
|
||||||
|
}
|
||||||
|
}
|
57
src/main/java/info/augendre/caps_extractor/I18nSupport.java
Normal file
57
src/main/java/info/augendre/caps_extractor/I18nSupport.java
Normal file
|
@ -0,0 +1,57 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2013 Philippe VIENNE
|
||||||
|
*
|
||||||
|
* This file is a part of SpeleoGraph
|
||||||
|
*
|
||||||
|
* SpeleoGraph is free software: you can redistribute
|
||||||
|
* it and/or modify it under the terms of the GNU General
|
||||||
|
* Public License as published by the Free Software
|
||||||
|
* Foundation, either version 3 of the License, or (at your
|
||||||
|
* option) any later version.
|
||||||
|
*
|
||||||
|
* SpeleoGraph is distributed in the hope that it will
|
||||||
|
* be useful, but WITHOUT ANY WARRANTY; without even the
|
||||||
|
* implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||||
|
* PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
|
* for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public
|
||||||
|
* License along with SpeleoGraph.
|
||||||
|
* If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package info.augendre.caps_extractor;
|
||||||
|
|
||||||
|
import com.jgoodies.common.internal.StringLocalizer;
|
||||||
|
import org.jetbrains.annotations.NonNls;
|
||||||
|
import org.jetbrains.annotations.PropertyKey;
|
||||||
|
|
||||||
|
import java.text.MessageFormat;
|
||||||
|
import java.util.ResourceBundle;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Distributed on licence GNU GPL V3.
|
||||||
|
*/
|
||||||
|
public class I18nSupport implements StringLocalizer {
|
||||||
|
@NonNls
|
||||||
|
private static final ResourceBundle bundle = ResourceBundle.getBundle("info/augendre/caps_extractor/strings");
|
||||||
|
|
||||||
|
public static String translate
|
||||||
|
(@PropertyKey(resourceBundle = "info.augendre.caps_extractor.strings")
|
||||||
|
String key, Object... params) {
|
||||||
|
String value = bundle.getString(key);
|
||||||
|
if (params.length > 0) return MessageFormat.format(value, params);
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns a localized String for the given key.
|
||||||
|
*
|
||||||
|
* @param key the key used to look up the localized String
|
||||||
|
* @return the localized String
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public String getString(@PropertyKey(resourceBundle = "info.augendre.caps_extractor.strings") String key) {
|
||||||
|
return translate(key);
|
||||||
|
}
|
||||||
|
}
|
47
src/main/java/info/augendre/caps_extractor/MainPanel.form
Normal file
47
src/main/java/info/augendre/caps_extractor/MainPanel.form
Normal file
|
@ -0,0 +1,47 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<form xmlns="http://www.intellij.com/uidesigner/form/" version="1" bind-to-class="info.augendre.caps_extractor.MainPanel">
|
||||||
|
<grid id="27dc6" binding="contentPanel" default-binding="true" layout-manager="GridLayoutManager" row-count="2" column-count="2" same-size-horizontally="false" same-size-vertically="false" hgap="-1" vgap="-1">
|
||||||
|
<margin top="10" left="10" bottom="10" right="10"/>
|
||||||
|
<constraints>
|
||||||
|
<xy x="20" y="20" width="736" height="400"/>
|
||||||
|
</constraints>
|
||||||
|
<properties/>
|
||||||
|
<border type="none"/>
|
||||||
|
<children>
|
||||||
|
<component id="9b3fe" class="javax.swing.JTextField" binding="inputField">
|
||||||
|
<constraints>
|
||||||
|
<grid row="0" column="1" row-span="1" col-span="1" vsize-policy="0" hsize-policy="6" anchor="8" fill="1" indent="0" use-parent-layout="false">
|
||||||
|
<preferred-size width="400" height="-1"/>
|
||||||
|
</grid>
|
||||||
|
</constraints>
|
||||||
|
<properties/>
|
||||||
|
</component>
|
||||||
|
<component id="e1e93" class="javax.swing.JTextField" binding="outputField">
|
||||||
|
<constraints>
|
||||||
|
<grid row="1" column="1" row-span="1" col-span="1" vsize-policy="0" hsize-policy="6" anchor="8" fill="1" indent="0" use-parent-layout="false">
|
||||||
|
<preferred-size width="150" height="-1"/>
|
||||||
|
</grid>
|
||||||
|
</constraints>
|
||||||
|
<properties/>
|
||||||
|
</component>
|
||||||
|
<component id="afb81" class="javax.swing.JLabel">
|
||||||
|
<constraints>
|
||||||
|
<grid row="0" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="0" anchor="4" fill="0" indent="0" use-parent-layout="false"/>
|
||||||
|
</constraints>
|
||||||
|
<properties>
|
||||||
|
<labelFor value="9b3fe"/>
|
||||||
|
<text resource-bundle="info/augendre/caps_extractor/strings" key="label.input"/>
|
||||||
|
</properties>
|
||||||
|
</component>
|
||||||
|
<component id="c58ce" class="javax.swing.JLabel">
|
||||||
|
<constraints>
|
||||||
|
<grid row="1" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="0" anchor="4" fill="0" indent="0" use-parent-layout="false"/>
|
||||||
|
</constraints>
|
||||||
|
<properties>
|
||||||
|
<labelFor value="e1e93"/>
|
||||||
|
<text resource-bundle="info/augendre/caps_extractor/strings" key="label.output"/>
|
||||||
|
</properties>
|
||||||
|
</component>
|
||||||
|
</children>
|
||||||
|
</grid>
|
||||||
|
</form>
|
123
src/main/java/info/augendre/caps_extractor/MainPanel.java
Normal file
123
src/main/java/info/augendre/caps_extractor/MainPanel.java
Normal file
|
@ -0,0 +1,123 @@
|
||||||
|
package info.augendre.caps_extractor;
|
||||||
|
|
||||||
|
import com.intellij.uiDesigner.core.GridConstraints;
|
||||||
|
import com.intellij.uiDesigner.core.GridLayoutManager;
|
||||||
|
|
||||||
|
import javax.swing.*;
|
||||||
|
import java.awt.*;
|
||||||
|
import java.awt.event.KeyAdapter;
|
||||||
|
import java.awt.event.KeyEvent;
|
||||||
|
import java.util.ResourceBundle;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Created by Gabriel.
|
||||||
|
*/
|
||||||
|
public class MainPanel {
|
||||||
|
private JTextField inputField;
|
||||||
|
private JPanel contentPanel;
|
||||||
|
private JTextField outputField;
|
||||||
|
private boolean parse;
|
||||||
|
|
||||||
|
public MainPanel() {
|
||||||
|
parse = false;
|
||||||
|
inputField.addKeyListener(new KeyAdapter() {
|
||||||
|
@Override
|
||||||
|
public void keyPressed(KeyEvent e) {
|
||||||
|
parse = e.getKeyCode() == KeyEvent.VK_BACK_SPACE || inputField.getSelectedText() != null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void keyReleased(KeyEvent e) {
|
||||||
|
if (parse) {
|
||||||
|
outputField.setText(extractUpperCase(inputField.getText()));
|
||||||
|
} else {
|
||||||
|
char key = e.getKeyChar();
|
||||||
|
if (Character.isUpperCase(key)) {
|
||||||
|
outputField.setText(outputField.getText() + key);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
private String extractUpperCase(String s) {
|
||||||
|
String upperCase = "";
|
||||||
|
for (int i = 0; i < s.length(); i++) {
|
||||||
|
char current = s.charAt(i);
|
||||||
|
if (Character.isUpperCase(current)) {
|
||||||
|
upperCase += current;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return upperCase;
|
||||||
|
}
|
||||||
|
|
||||||
|
public JPanel getContentPanel() {
|
||||||
|
return contentPanel;
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
// GUI initializer generated by IntelliJ IDEA GUI Designer
|
||||||
|
// >>> IMPORTANT!! <<<
|
||||||
|
// DO NOT EDIT OR ADD ANY CODE HERE!
|
||||||
|
$$$setupUI$$$();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Method generated by IntelliJ IDEA GUI Designer
|
||||||
|
* >>> IMPORTANT!! <<<
|
||||||
|
* DO NOT edit this method OR call it in your code!
|
||||||
|
*
|
||||||
|
* @noinspection ALL
|
||||||
|
*/
|
||||||
|
private void $$$setupUI$$$() {
|
||||||
|
contentPanel = new JPanel();
|
||||||
|
contentPanel.setLayout(new GridLayoutManager(2, 2, new Insets(10, 10, 10, 10), -1, -1));
|
||||||
|
inputField = new JTextField();
|
||||||
|
contentPanel.add(inputField, new GridConstraints(0, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(400, -1), null, 0, false));
|
||||||
|
outputField = new JTextField();
|
||||||
|
contentPanel.add(outputField, new GridConstraints(1, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false));
|
||||||
|
final JLabel label1 = new JLabel();
|
||||||
|
this.$$$loadLabelText$$$(label1, ResourceBundle.getBundle("info/augendre/caps_extractor/strings").getString("label.input"));
|
||||||
|
contentPanel.add(label1, new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false));
|
||||||
|
final JLabel label2 = new JLabel();
|
||||||
|
this.$$$loadLabelText$$$(label2, ResourceBundle.getBundle("info/augendre/caps_extractor/strings").getString("label.output"));
|
||||||
|
contentPanel.add(label2, new GridConstraints(1, 0, 1, 1, GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false));
|
||||||
|
label1.setLabelFor(inputField);
|
||||||
|
label2.setLabelFor(outputField);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @noinspection ALL
|
||||||
|
*/
|
||||||
|
private void $$$loadLabelText$$$(JLabel component, String text) {
|
||||||
|
StringBuffer result = new StringBuffer();
|
||||||
|
boolean haveMnemonic = false;
|
||||||
|
char mnemonic = '\0';
|
||||||
|
int mnemonicIndex = -1;
|
||||||
|
for (int i = 0; i < text.length(); i++) {
|
||||||
|
if (text.charAt(i) == '&') {
|
||||||
|
i++;
|
||||||
|
if (i == text.length()) break;
|
||||||
|
if (!haveMnemonic && text.charAt(i) != '&') {
|
||||||
|
haveMnemonic = true;
|
||||||
|
mnemonic = text.charAt(i);
|
||||||
|
mnemonicIndex = result.length();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
result.append(text.charAt(i));
|
||||||
|
}
|
||||||
|
component.setText(result.toString());
|
||||||
|
if (haveMnemonic) {
|
||||||
|
component.setDisplayedMnemonic(mnemonic);
|
||||||
|
component.setDisplayedMnemonicIndex(mnemonicIndex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @noinspection ALL
|
||||||
|
*/
|
||||||
|
public JComponent $$$getRootComponent$$$() {
|
||||||
|
return contentPanel;
|
||||||
|
}
|
||||||
|
}
|
44
src/main/java/info/augendre/caps_extractor/MainWindow.java
Normal file
44
src/main/java/info/augendre/caps_extractor/MainWindow.java
Normal file
|
@ -0,0 +1,44 @@
|
||||||
|
package info.augendre.caps_extractor;
|
||||||
|
|
||||||
|
import javax.swing.*;
|
||||||
|
import java.util.ResourceBundle;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Created by Gabriel.
|
||||||
|
*/
|
||||||
|
public class MainWindow extends JFrame {
|
||||||
|
public MainWindow() {
|
||||||
|
super(I18nSupport.translate("plain.title"));
|
||||||
|
this.setup();
|
||||||
|
}
|
||||||
|
|
||||||
|
public JMenuBar createMenu() {
|
||||||
|
JMenuBar menuBar = new JMenuBar();
|
||||||
|
JMenu help = new JMenu(I18nSupport.translate("menu.help"));
|
||||||
|
menuBar.add(help);
|
||||||
|
JMenuItem about = new JMenuItem(new AboutAction());
|
||||||
|
help.add(about);
|
||||||
|
return menuBar;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setup() {
|
||||||
|
MainPanel mainPanel = new MainPanel();
|
||||||
|
JPanel contentPanel = mainPanel.getContentPanel();
|
||||||
|
this.setJMenuBar(createMenu());
|
||||||
|
this.setContentPane(contentPanel);
|
||||||
|
this.pack();
|
||||||
|
this.setLocationRelativeTo(null);
|
||||||
|
this.setVisible(true);
|
||||||
|
this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
try {
|
||||||
|
UIManager.setLookAndFeel(
|
||||||
|
UIManager.getSystemLookAndFeelClassName());
|
||||||
|
} catch (UnsupportedLookAndFeelException | ClassNotFoundException | InstantiationException | IllegalAccessException e) {
|
||||||
|
e.printStackTrace(System.err);
|
||||||
|
}
|
||||||
|
new MainWindow();
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,5 @@
|
||||||
|
<root>
|
||||||
|
<item name='java.util.ResourceBundle'>
|
||||||
|
<annotation name='org.jetbrains.annotations.NonNls'/>
|
||||||
|
</item>
|
||||||
|
</root>
|
|
@ -0,0 +1,6 @@
|
||||||
|
label.input=&Input\:
|
||||||
|
label.output=&Output\:
|
||||||
|
plain.about_title=A propos
|
||||||
|
plain.dev=Developer
|
||||||
|
menu.help=Help
|
||||||
|
plain.title=Caps Extractor
|
|
@ -0,0 +1,6 @@
|
||||||
|
label.input=&Entr\u00E9e \:
|
||||||
|
label.output=&Sortie \:
|
||||||
|
plain.about_title=A propos
|
||||||
|
plain.dev=D\u00E9veloppeur
|
||||||
|
menu.help=Aide
|
||||||
|
plain.title=Extracteur de majuscules
|
Loading…
Reference in a new issue