Преглед изворни кода

Set up repository with initial classes

Sam Jaffe пре 8 година
родитељ
комит
9a670b215f

+ 128 - 0
pom.xml

@@ -0,0 +1,128 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+
+  <groupId>org.leumasjaffe</groupId>
+  <artifactId>graphics</artifactId>
+  <version>0.1</version>
+  <packaging>jar</packaging>
+
+  <name>graphics</name>
+  <url>http://maven.apache.org</url>
+
+  <properties>
+    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+  </properties>
+  
+  <build>
+    <pluginManagement>
+      <plugins>
+        <plugin>
+          <groupId>org.eclipse.m2e</groupId>
+          <artifactId>lifecycle-mapping</artifactId>
+          <version>1.0.0</version>
+          <configuration>
+            <lifecycleMappingMetadata>
+              <pluginExecutions>
+                <pluginExecution>
+                  <pluginExecutionFilter>
+                    <groupId>org.projectlombok</groupId>
+                    <artifactId>lombok-maven-plugin</artifactId>
+                    <versionRange>[1,)</versionRange>
+                    <goals>
+                      <goal>delombok</goal>
+                    </goals>
+                  </pluginExecutionFilter>
+                  <action>
+                    <ignore />
+                  </action>
+                </pluginExecution>
+              </pluginExecutions>
+            </lifecycleMappingMetadata>
+          </configuration>
+        </plugin>
+      </plugins>
+    </pluginManagement>
+    <sourceDirectory>target/generated-sources/delombok</sourceDirectory>
+    <plugins>
+      <plugin>
+        <artifactId>maven-compiler-plugin</artifactId>
+        <version>3.5.1</version>
+        <configuration>
+          <compilerVersion>1.8</compilerVersion>
+          <source>1.8</source>
+          <target>1.8</target>
+        </configuration>
+      </plugin>
+      <plugin>
+        <groupId>org.projectlombok</groupId>
+        <artifactId>lombok-maven-plugin</artifactId>
+        <version>1.16.18.0</version>
+        <executions>
+          <execution>
+            <id>delombok</id>
+            <phase>generate-sources</phase>
+            <goals>
+              <goal>delombok</goal>
+            </goals>
+          </execution>
+        </executions>
+        <configuration>
+          <addOutputDirectory>false</addOutputDirectory>
+        </configuration>
+      </plugin>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-jar-plugin</artifactId>
+        <version>2.4</version>
+        <configuration>
+          <archive>
+            <manifest>
+              <addClasspath>true</addClasspath>
+              <classpathPrefix>dependency-jars/</classpathPrefix>
+            </manifest>
+          </archive>
+        </configuration>
+      </plugin>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-dependency-plugin</artifactId>
+        <version>2.5.1</version>
+        <executions>
+          <execution>
+            <id>copy-dependencies</id>
+            <phase>package</phase>
+            <goals>
+              <goal>copy-dependencies</goal>
+            </goals>
+            <configuration>
+              <outputDirectory>
+                ${project.build.directory}/dependency-jars/
+              </outputDirectory>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
+
+  <dependencies>
+    <dependency>
+      <groupId>junit</groupId>
+      <artifactId>junit</artifactId>
+      <version>3.8.1</version>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.projectlombok</groupId>
+      <artifactId>lombok</artifactId>
+      <version>1.16.18</version>
+    </dependency>
+    <dependency>
+      <groupId>org.projectlombok</groupId>
+      <artifactId>lombok-maven-plugin</artifactId>
+      <version>1.16.18.0</version>
+      <type>maven-plugin</type>
+    </dependency>
+  </dependencies>
+</project>

+ 44 - 0
src/main/lombok/org/leumasjaffe/graphics/MultiScrollable.java

@@ -0,0 +1,44 @@
+package org.leumasjaffe.graphics;
+
+import java.awt.Component;
+import java.awt.GridBagConstraints;
+import java.awt.GridBagLayout;
+
+import javax.swing.JPanel;
+import javax.swing.JScrollPane;
+
+@SuppressWarnings("serial")
+public class MultiScrollable extends JPanel {
+	public MultiScrollable(Component...components) {
+		GridBagLayout layout = new GridBagLayout();
+		layout.columnWidths = new int[]{0, 0};
+		layout.rowHeights = prepareInts(components.length);
+		layout.columnWeights = new double[]{1.0, Double.MIN_VALUE};
+		layout.rowWeights = prepareDoubles(components.length);
+		setLayout(layout);
+		for (int i = 0; i < components.length; ++i) {
+			GridBagConstraints gbc_panel = new GridBagConstraints();
+			gbc_panel.fill = GridBagConstraints.BOTH;
+			gbc_panel.gridx = 0;
+			gbc_panel.gridy = i;
+			add(new JScrollPane(components[i]), gbc_panel);
+		}
+	}
+
+	private double[] prepareDoubles(int length) {
+		double[] dbls = new double[length+1];
+		for (int i = 0; i < length; ++i) {
+			dbls[i] = 1.0;
+		}
+		dbls[length] = Double.MIN_VALUE;
+		return dbls;
+	}
+
+	private int[] prepareInts(int length) {
+		int[] ints = new int[length+1];
+		for (int i = 0; i < length+1; ++i) {
+			ints[i] = 0;
+		}
+		return ints;
+	}
+}

+ 46 - 0
src/main/lombok/org/leumasjaffe/graphics/NumberTextField.java

@@ -0,0 +1,46 @@
+package org.leumasjaffe.graphics;
+
+import java.awt.event.FocusEvent;
+import java.text.NumberFormat;
+
+import javax.swing.JFormattedTextField;
+import javax.swing.text.NumberFormatter;
+
+public class NumberTextField extends JFormattedTextField {
+	
+	 /**
+	 * 
+	 */
+	private static final long serialVersionUID = 1L;
+
+	private static final NumberFormatter getNumberFormatInstance(int min, int max) {
+		NumberFormat format = NumberFormat.getInstance();
+	    NumberFormatter formatter = new NumberFormatter(format);
+	    formatter.setValueClass(Integer.class);
+	    formatter.setMinimum(min);
+	    formatter.setMaximum(max);
+	    formatter.setAllowsInvalid(true);
+	    return formatter;
+	}
+
+	public NumberTextField() {
+		super(getNumberFormatInstance(0, Integer.MAX_VALUE));
+	}
+	
+	public NumberTextField(int min, int max) {
+		super(getNumberFormatInstance(min, max));
+	}
+	
+	@Override
+	protected void processFocusEvent(FocusEvent e) {
+	    String text = getText();
+
+	    super.processFocusEvent(e);
+
+	    if ((text == null || text.length() == 0) &&
+	        getValue() != null)
+	        setValue(null);
+	}
+
+
+}

+ 17 - 0
src/main/lombok/org/leumasjaffe/graphics/PanelRenderer.java

@@ -0,0 +1,17 @@
+package org.leumasjaffe.graphics;
+
+import java.awt.Component;
+
+import javax.swing.JList;
+import javax.swing.JPanel;
+import javax.swing.ListCellRenderer;
+
+public class PanelRenderer implements ListCellRenderer<JPanel> {
+
+    @Override
+    public Component getListCellRendererComponent(JList<? extends JPanel> list, JPanel renderer, 
+    		int index, boolean isSelected, boolean cellHasFocus) {
+        renderer.setBackground(isSelected ? list.getSelectionBackground() : list.getBackground());
+        return renderer;
+    }
+}

+ 26 - 0
src/main/lombok/org/leumasjaffe/graphics/RawArrayListModelImpl.java

@@ -0,0 +1,26 @@
+package org.leumasjaffe.graphics;
+
+import javax.swing.AbstractListModel;
+
+import lombok.AllArgsConstructor;
+
+@AllArgsConstructor
+public class RawArrayListModelImpl<T> extends AbstractListModel<T> {
+
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 8284851743179214349L;
+	protected T[] data;
+
+	@Override
+	public int getSize() {
+		return data == null ? 0 : data.length;
+	}
+
+	@Override
+	public T getElementAt(int index) {
+		return data[index];
+	}
+
+}

+ 8 - 0
src/main/lombok/org/leumasjaffe/graphics/package-info.java

@@ -0,0 +1,8 @@
+/**
+ * 
+ */
+/**
+ * @author Sam Jaffe
+ *
+ */
+package org.leumasjaffe.graphics;