Compare commits

..

458 Commits

Author SHA1 Message Date
bancika e2fb415a59 switch to java 1.6.x 2016-04-28 13:44:52 +02:00
bancika 34720db33a Update README.md 2016-04-25 15:03:26 +02:00
bancika 146634f75d improved potentiometer symbol 2016-04-25 15:00:25 +02:00
bancika 6f19985c73 Merge remote-tracking branch 'origin/master' 2016-04-21 18:05:08 +02:00
bancika 0507812178 add missing files 2016-04-21 18:04:25 +02:00
bancika 368ec6a30d 3.29.0 add missing files 2016-04-21 18:01:05 +02:00
bancika c1268afb68 Update README.md 2016-04-20 12:27:35 +02:00
bancika 1c1703d606 Update README.md
3.29.0 release
2016-04-20 12:25:50 +02:00
bancika 3e18c5e1db 3.29.0 release
[Bug Fix] Issue with losing saved user configuration
[Bug Fix] Issue with disabled "Save as Template" context menu item
problem, as well as issue with strange rotation and probably few more
[Bug Fix] Undo steps kept after opening a new file
[New Feature] Transistors can be rotated and flipped vertically
[New Feature] DIL ICs can show pin numbers
[New Feature] Display both component value and name or neither of them
[New Feature] Potentiometer schematic symbol added
2016-04-20 11:46:00 +02:00
bancika fbc3c4bfc4 Update README.md 2015-09-04 11:36:09 +02:00
bancika 0b8a3d6f9f Update README.md 2015-09-04 11:35:31 +02:00
bancika f0a2473763 Update README.md 2015-09-04 11:34:39 +02:00
bancika 91f21c1896 Update README.md 2015-09-04 11:34:03 +02:00
bancika 9808e672c5 Update README.md 2015-09-04 11:31:45 +02:00
bancika 7e310a9a9c Update README.md 2015-09-04 11:28:57 +02:00
bancika 4843cc729f Update README.md 2015-05-19 12:55:52 +02:00
bancika 335e2a572f Create README.md 2015-05-19 12:52:51 +02:00
bancika 12e49ceabf 2013-08-15 12:00:13 +00:00
bancika f23f396c0a use lib 2013-08-15 11:48:04 +00:00
bancika 94b92cc0d7 selection & multi d&d fix 2013-08-15 11:47:59 +00:00
bancika 448f87666d selection & multi d&d fix 2013-08-15 11:47:52 +00:00
bancika 8c0cec70de undo 2013-05-01 09:49:41 +00:00
bancika 05eba5195e 3.28 2013-05-01 09:45:12 +00:00
bancika e5c54242bc Select all within a layer 2013-04-30 14:12:42 +00:00
bancika f7f669bff3 Select all within a layer 2013-04-30 14:12:34 +00:00
bancika 0a490d148a 2013-04-30 10:07:14 +00:00
bancika bee14895d7 Right click rotation during component creation throws an error 2013-04-30 10:06:49 +00:00
bancika 8def96d03c Right click rotation during component creation throws an error 2013-04-30 10:06:43 +00:00
bancika dab4e76f44 redo shape class hierarchy 2013-04-30 09:06:21 +00:00
bancika ac81b30e8e Trace cuts can be placed between two holes for tighter layouts 2013-04-29 14:16:25 +00:00
bancika 689ddebdb8 Trace cuts can be placed between two holes for tighter layouts 2013-04-29 10:58:44 +00:00
bancika 2b0d9dd9d3 Trace cuts can be placed between two holes for tighter layouts 2013-04-29 10:58:38 +00:00
bancika b335f0aabe fix ctrl selection 2013-04-29 10:31:29 +00:00
bancika bdfa255439 fix ctrl selection 2013-04-29 10:30:58 +00:00
bancika bc3875ecbf fix ctrl selection 2013-04-29 10:30:55 +00:00
bancika 59f516df9c Allow grid spacing as little as 0.1mm 2013-04-29 10:19:06 +00:00
bancika 0c86f60752 Allow grid spacing as little as 0.1mm 2013-04-29 10:19:03 +00:00
bancika 91deb1d7da apply template to existing components
do not mess up selection on right click
popup menu improvements
2013-04-29 10:08:36 +00:00
bancika 1714ddb444 apply template to existing components
do not mess up selection on right click
popup menu improvements
2013-04-29 10:08:26 +00:00
bancika 35326e7d17 apply template to existing components
do not mess up selection on right click
popup menu improvements
2013-04-29 10:08:19 +00:00
bancika b2dc050c32 added tri-pad board 2013-04-29 09:17:53 +00:00
bancika eb58f1786a Moving multiple components doesn't honor snap to grid OFF setting 2013-04-26 14:19:32 +00:00
bancika 16ce229b57 Moving multiple components doesn't honor snap to grid OFF setting 2013-04-26 14:19:29 +00:00
bancika 93954f60c7 Moved all schematic symbols to a dedicated category 2013-04-26 12:34:07 +00:00
bancika dc533368a8 Moved all schematic symbols to a dedicated category 2013-04-26 12:33:52 +00:00
bancika e9a54d1fe2 Ability to import existing DIY files into a project 2013-04-26 12:05:34 +00:00
bancika cfd7af2793 Added primitive shapes - ellipse, polygon and (rounded) rectangle 2013-04-25 16:32:14 +00:00
bancika f8310b1fac Added primitive shapes - ellipse, polygon and (rounded) rectangle 2013-04-25 16:32:06 +00:00
bancika 8a125e8a4f transparent icons 2013-04-25 15:00:28 +00:00
bancika b975cc79b1 2013-04-25 14:51:05 +00:00
bancika 171ebf4473 Ability to rotate selection 2013-04-25 14:37:19 +00:00
bancika 5cb9824da4 Ability to rotate selection 2013-04-25 14:37:00 +00:00
bancika 6ef5ad5854 Ability to rotate selection 2013-04-25 14:36:50 +00:00
bancika 18edd60763 More predictable movement of multiple components at the same time 2013-04-23 16:11:31 +00:00
bancika ea1da54202 More predictable movement of multiple components at the same time 2013-04-23 16:11:28 +00:00
bancika 7497e89afd Large components disappear when none of the edges is in the visible area 2013-04-23 15:45:24 +00:00
bancika 8ed165766f Large components disappear when none of the edges is in the visible area 2013-04-23 15:45:17 +00:00
bancika 8c98e9dece Large components disappear when none of the edges is in the visible area 2013-04-23 15:45:11 +00:00
bancika a082e0be63 added breadboard component 2013-04-22 10:22:51 +00:00
bancika 6f0df4fdc9 added breadboard component 2013-04-22 10:22:15 +00:00
bancika d85f496702 added breadboard component 2013-04-22 10:22:10 +00:00
bancika ef24664eac added breadboard component 2013-04-22 10:22:04 +00:00
bancika bfb554a930 copy paste error 2013-03-04 12:21:35 +00:00
bancika 0ff52979ea copy paste error 2013-03-04 12:21:30 +00:00
bancika eb1c4a6688 3.24 build 2013-03-04 10:14:58 +00:00
bancika 47d42c5456 3.24 build 2013-03-04 10:14:42 +00:00
bancika 297a4f3518 Potentiometer doesn't update when size only is changed 2013-03-04 10:14:05 +00:00
bancika d678f6fed1 Potentiometer doesn't update when size only is changed 2013-03-04 10:13:37 +00:00
bancika 3583d6e5f5 Snap to grid after releasing Ctrl button and creating a new component 2013-03-04 09:59:59 +00:00
bancika e84e0c10e1 Snap to grid after releasing Ctrl button and creating a new component 2013-03-04 09:59:55 +00:00
bancika b6c1ebd079 Faster startup when using image component templates 2012-11-02 16:13:39 +00:00
bancika 42190d3498 Faster startup when using image component templates 2012-11-02 16:13:34 +00:00
bancika 00bc6808d8 Faster startup when using image component templates 2012-11-02 16:13:27 +00:00
bancika 1e90621545 icon 2012-10-11 08:42:07 +00:00
bancika 06b204fc38 SIP IC 2012-10-10 15:52:18 +00:00
bancika ac95d45f95 SIP IC 2012-10-10 15:52:10 +00:00
bancika 16e3241a94 icon 2012-10-10 15:51:55 +00:00
bancika 1760161aa3 Editable colors for DIP IC 2012-10-10 15:51:48 +00:00
bancika c57e5f837c Editable lead color; changed default lead color 2012-10-10 14:49:51 +00:00
bancika 024884d85d Editable lead color; changed default lead color 2012-10-10 14:49:39 +00:00
bancika 50562ae901 Editable lead color; changed default lead color 2012-10-10 14:49:30 +00:00
bancika c8d0711889 Editable lead color; changed default lead color 2012-10-09 09:47:58 +00:00
bancika 4338200088 Editable lead color; changed default lead color 2012-10-09 09:47:45 +00:00
bancika 5ea4ed44a4 Ctrl + right click on component type in toolbox appends components of that type to selection 2012-10-09 09:14:55 +00:00
bancika b1a1611a3a Right click shouldn't change selection 2012-10-09 09:12:19 +00:00
bancika 9af88002b0 Pasted components are placed below traces 2012-10-09 08:39:50 +00:00
bancika a6386dda96 Pasted components are placed below traces 2012-10-09 08:39:44 +00:00
bancika 352b3aeb6f Clearer standing component (mainly diode) reversion 2012-10-09 08:28:10 +00:00
bancika 5d6b787404 TO-3 transistor rotation is wrong for 180 degrees 2012-10-09 08:27:20 +00:00
bancika 3e36bce7ad TO-3 transistor rotation is wrong for 180 degrees 2012-10-09 08:27:14 +00:00
bancika 5d4cbadf6e Clearer standing component (mainly diode) reversion 2012-10-08 16:20:07 +00:00
bancika 6d10c45a18 Clearer standing component (mainly diode) reversion 2012-10-08 16:19:58 +00:00
bancika 4c04b72d44 do not hard-code version in presenter 2012-10-08 14:31:18 +00:00
bancika dd15702ca6 do not hard-code version in presenter 2012-10-08 14:31:03 +00:00
bancika c6bfb5a562 2012-10-08 10:23:16 +00:00
bancika bfa71e93d5 osx build 2012-10-08 10:21:58 +00:00
bancika 1a048d0b7c 2012-10-08 09:45:45 +00:00
bancika 6039f85631 Two Voltage properties for ceramic capacitors 2012-10-06 09:18:57 +00:00
bancika c843d8c28d Component templates save shape of the component (for wires and such) 2012-10-04 13:51:22 +00:00
bancika e7b05f109f Component templates save shape of the component (for wires and such) 2012-10-04 13:50:42 +00:00
bancika 5d2c4e0fc9 Component templates save shape of the component (for wires and such) 2012-10-04 13:50:35 +00:00
bancika ac0da8667c copy-paste improvement 2012-10-04 11:15:06 +00:00
bancika cc81fa1a56 copy-paste improvement 2012-10-04 11:14:58 +00:00
bancika 954bf200d2 copy-paste improvement 2012-10-04 11:14:49 +00:00
bancika 7bf8ff9347 saving config bug 2012-10-01 09:17:03 +00:00
bancika 1eba691750 saving config bug 2012-10-01 09:16:57 +00:00
bancika c20b17b12e saving config bug 2012-10-01 09:16:50 +00:00
bancika b734c87946 removed deps 2012-10-01 09:15:16 +00:00
bancika 5e25f25fc7 xstream update 2012-10-01 09:12:05 +00:00
bancika 80582f61ec xstream update 2012-10-01 09:11:56 +00:00
bancika 9a43597f6f xstream update 2012-10-01 09:11:51 +00:00
bancika 2993900cc6 Do not show exception for config.properties 2012-10-01 08:14:16 +00:00
bancika 39efdca0b8 bring back default boxes 2012-09-30 11:27:33 +00:00
bancika 2dcaabf3f2 bring back default boxes 2012-09-30 11:26:56 +00:00
bancika af9798772f diode value fix 2012-09-30 11:23:29 +00:00
bancika 4ddcea7bc7 BOM and multi-edit doesn't work when there's a component without a value set 2012-09-30 10:28:59 +00:00
bancika 6087b39ccd LED symbol 2012-09-29 16:26:25 +00:00
bancika b77120f742 cascade build files 2012-09-29 12:24:54 +00:00
bancika 0acae7c28d Schottky diode 2012-09-28 15:51:19 +00:00
bancika 0cb0e950f7 Schottky diode 2012-09-28 15:51:11 +00:00
bancika 951dc3861a Zener diode symbol 2012-09-28 15:29:14 +00:00
bancika 0483656258 Zener diode symbol 2012-09-28 15:29:09 +00:00
bancika 34a0000d3c Diode symbol 2012-09-28 15:20:19 +00:00
bancika 426eb3c6c2 Diode symbol 2012-09-28 15:17:35 +00:00
bancika 4c8cae36c1 Diode symbol 2012-09-28 15:16:45 +00:00
bancika 5cd2ceeac3 Diode symbol 2012-09-28 15:16:34 +00:00
bancika 979eb7a9cf Diode symbol 2012-09-28 15:16:19 +00:00
bancika c9d60e4d4f classpath util method 2012-09-27 16:18:34 +00:00
bancika 948d8e7b4a classpath util method 2012-09-27 16:18:28 +00:00
bancika 2f06f00d2f classpath util method 2012-09-27 16:18:18 +00:00
bancika 45841657a0 Mirrored text for PCB artwork 2012-09-27 16:17:56 +00:00
bancika e481fdb986 Mirrored text for PCB artwork 2012-09-27 14:33:40 +00:00
bancika 44c358af2b Mirrored text for PCB artwork 2012-09-27 14:33:32 +00:00
bancika d57ce6dc4a classpath debug 2012-09-25 20:30:15 +00:00
bancika e9b81795b7 allow null values 2012-09-25 20:24:03 +00:00
bancika 6c7e149c93 inductor symbol
allow empty values
2012-09-25 14:45:37 +00:00
bancika db173acf77 inductor symbol
allow empty values
2012-09-25 14:45:22 +00:00
bancika deae73f6be inductor symbol
allow empty values
2012-09-25 14:45:11 +00:00
bancika 7ac43b5e1e classpath util method 2012-09-25 08:50:22 +00:00
bancika 514b659677 classpath util method 2012-09-25 08:50:11 +00:00
bancika 06d642b494 classpath util method 2012-09-25 08:48:18 +00:00
bancika 12b46bdfc8 classpath util method 2012-09-25 08:47:44 +00:00
bancika e98f61ae6f classpath 2012-09-24 16:24:46 +00:00
bancika 44cc3f1dd5 2012-09-24 14:29:32 +00:00
bancika 6e510c56a2 2012-09-24 14:29:04 +00:00
bancika b181a86fa9 Diode symbol 2012-09-24 14:23:30 +00:00
bancika fbb28d74cd Diode symbol 2012-09-24 14:23:09 +00:00
bancika bf9bf70761 Pentode symbol 2012-09-24 13:34:30 +00:00
bancika f7a5038912 Pentode symbol 2012-09-24 13:34:05 +00:00
bancika f62df8d58e Triode symbol 2012-09-24 10:49:01 +00:00
bancika d0f6302038 Triode symbol 2012-09-24 10:48:55 +00:00
bancika d7198e4705 jack outline 2012-09-21 13:42:07 +00:00
bancika 8ea4ba6aab jack outline 2012-09-21 13:42:00 +00:00
bancika e604a54dd8 switch outline 2012-09-21 12:31:20 +00:00
bancika 85207733d5 switch outline 2012-09-21 12:31:14 +00:00
bancika 3385d04d95 Outline mode for trimmers, potentiometers and transistors 2012-09-21 11:32:34 +00:00
bancika ec597d964c Outline mode for trimmers, potentiometers and transistors 2012-09-21 11:32:28 +00:00
bancika abf9faa05a Editable label color for leaded components 2012-09-21 10:42:33 +00:00
bancika e2412c223a Editable label color for leaded components 2012-09-21 10:42:26 +00:00
bancika edc4bd4928 2012-09-18 10:29:43 +00:00
bancika 90be75db5e 2012-09-18 10:29:35 +00:00
bancika ee0a503bbb OSX build 2012-09-18 10:25:20 +00:00
bancika eed1d9601c OSX build 2012-09-18 10:25:12 +00:00
bancika ce3d5fc808 update.xml 2012-09-17 10:58:58 +00:00
bancika 09db593d28 Added connector dot component
Zero-sized holes on pads
2012-09-13 15:12:41 +00:00
bancika 25cdfd199a Added connector dot component
Zero-sized holes on pads
2012-09-13 15:12:36 +00:00
bancika 92495b1cf0 Ability to flip standing diodes 2012-09-13 15:05:29 +00:00
bancika 039fabc916 Ability to flip standing diodes 2012-09-13 15:05:21 +00:00
bancika f7a73f2bcb Ability to flip standing diodes 2012-09-13 15:05:15 +00:00
bancika a6731fd284 Ability to rotate text 2012-09-07 14:48:12 +00:00
bancika 5db8288b0a Ability to rotate text 2012-09-07 14:48:04 +00:00
bancika aea4c434dd Radial components become transparent by themself 2012-09-07 09:13:40 +00:00
bancika 35dfe799c0 Radial components become transparent by themself 2012-09-07 09:13:35 +00:00
bancika 5087a84dc1 right click improvement 2012-09-03 08:41:16 +00:00
bancika bda92b6982 added template menu option 2012-09-03 08:38:38 +00:00
bancika 732cb102a3 fixed building 2012-08-31 16:34:32 +00:00
bancika cf7dc0778b 2012-08-31 15:27:33 +00:00
bancika 75b2afad09 Added support for component templates 2012-08-31 15:26:34 +00:00
bancika e85ffd1483 Ability to rotate toggle switch 2012-08-31 13:49:48 +00:00
bancika 5abf2ebaa3 Ability to rotate toggle switch 2012-08-31 13:49:42 +00:00
bancika b0164a1ddd Ability to rotate toggle switch 2012-08-31 13:49:34 +00:00
bancika 371fee0614 2012-08-31 13:17:46 +00:00
bancika 28f56693a9 icon rendering 2012-08-31 13:17:02 +00:00
bancika 9ebfad7d05 icon rendering 2012-08-31 13:16:43 +00:00
bancika acbd3d8378 Added support for component templates 2012-08-31 13:12:24 +00:00
bancika 4997e5b3bf render quality 2012-08-31 12:49:13 +00:00
bancika 5e86621f37 Hidden "default" checkboxes from the editor 2012-08-31 12:34:00 +00:00
bancika 84f2da5313 Added support for component templates 2012-08-31 11:23:08 +00:00
bancika f164473d25 Added support for component templates 2012-08-31 11:10:22 +00:00
bancika 8804295df6 Added support for component templates 2012-08-31 11:10:08 +00:00
bancika 8c3c6ea56e selection rect 2012-08-30 15:04:08 +00:00
bancika 7f5f61f5b0 back compatibility 2012-08-30 09:44:11 +00:00
bancika 6d79b453de back compatibility 2012-08-30 09:42:42 +00:00
bancika 894f070fee 2012-08-30 09:38:39 +00:00
bancika e115f87f65 v1 pot and label import bug 2012-08-30 09:38:15 +00:00
bancika 6068619c43 v1 pot and label import bug 2012-08-30 09:38:08 +00:00
bancika cb547e40fb v1 pot and label import bug 2012-08-30 09:37:59 +00:00
bancika 502186b1e3 Fixed ruler jumping issue 2012-08-29 16:08:07 +00:00
bancika a051382e6c better quality icon rendering 2012-08-29 15:53:34 +00:00
bancika 4e3451bdf9 TO-3 transistors 2012-08-29 15:52:27 +00:00
bancika 9f891d19c2 Label vertical and horizontal alignment can be changed 2012-08-29 13:29:46 +00:00
bancika 923107e3ea Label vertical and horizontal alignment can be changed 2012-08-29 13:23:03 +00:00
bancika a1d39c047e Label vertical and horizontal alignment can be changed 2012-08-29 13:22:58 +00:00
bancika 5b439c1603 TO-3 transistors 2012-08-29 12:53:35 +00:00
bancika c3308fa6e9 TO-3 transistors 2012-08-29 12:53:26 +00:00
bancika 19e1a3576a Miniature and ultra-miniature PCB mount relays 2012-08-28 15:03:46 +00:00
bancika 532b482fed Miniature and ultra-miniature PCB mount relays 2012-08-28 15:03:20 +00:00
bancika 6c34a4cd8d label fix 2012-08-28 15:01:45 +00:00
bancika de348acff7 Folded TO-220 transistor 2012-08-27 17:26:12 +00:00
bancika ce63423c66 Folded TO-220 transistor 2012-08-27 17:26:07 +00:00
bancika 293c3096b0 Editable pin spacing for all radial components
Folded elytics
2012-08-27 15:45:20 +00:00
bancika 3db2a06f52 Exception fix for java 7 2012-08-27 15:45:03 +00:00
bancika 064d83d2c4 2012-08-27 15:34:22 +00:00
bancika a1a9171c7c Editable pin spacing for all radial components
Folded elytics
2012-08-27 15:31:31 +00:00
bancika b0ce8242be Editable pin spacing for all radial components
Folded elytics
2012-08-27 15:31:25 +00:00
bancika c08e52b994 Editable pin spacing for all radial components
Folded elytics
2012-08-27 14:34:59 +00:00
bancika b454c017a2 Editable pin spacing for all radial components
Folded elytics
2012-08-27 14:34:50 +00:00
bancika 9a6a8cc646 Editable pin spacing for all radial components
Folded elytics
2012-08-27 14:34:45 +00:00
bancika 28cbc39b5f Added TO-1
Added folded TO-92
2012-08-27 10:31:23 +00:00
bancika 1b24c8eb16 Added TO-1
Added folded TO-92
2012-08-24 15:58:44 +00:00
bancika 80bd386564 Added TO-1
Added folded TO-92
2012-08-24 15:58:37 +00:00
bancika ddfac76b58 Component naming bug fix 2012-08-24 15:58:14 +00:00
bancika bb22ef61ff BOM backward compatibility 2012-08-24 14:09:09 +00:00
bancika 4b9349fbcb BOM backward compatibility 2012-08-24 14:08:01 +00:00
bancika 7d13dd647a BOM exception fix 2012-08-24 14:05:43 +00:00
bancika a1a290671d Show voltage and power ratings in the BOM where applicable 2012-08-24 13:43:07 +00:00
bancika 0c99b2b6a6 Show voltage and power ratings in BOM where applicable 2012-08-24 13:42:37 +00:00
bancika cce34c9d9a Show voltage and power ratings in BOM where applicable 2012-08-24 13:42:22 +00:00
bancika 1e34913d1a Show voltage and power ratings in BOM where applicable 2012-08-24 13:42:10 +00:00
bancika f419c1afb9 Multi-layer PCB support 2012-08-24 11:12:46 +00:00
bancika 4b2242336a Multi-layer PCB support 2012-08-24 11:12:35 +00:00
bancika 30ab42a47b Multi-layer PCB support 2012-08-24 11:12:30 +00:00
bancika 34c9648b47 Editable BOM color 2012-08-23 16:00:50 +00:00
bancika 0aea4c6eed Editable BOM color 2012-08-23 16:00:46 +00:00
bancika ff43225f11 Block user operations 2012-08-23 15:44:40 +00:00
bancika 585351bb11 Block user operations 2012-08-23 15:44:33 +00:00
bancika 58ac3d8148 Polygon Ground Fill component 2012-08-23 15:12:10 +00:00
bancika 00a05f6f15 Polygon Ground Fill component 2012-08-23 15:12:01 +00:00
bancika a800542a14 2012-08-23 09:49:20 +00:00
bancika 65a5775d5d better logging 2012-08-23 09:34:04 +00:00
bancika 2001015f9e Image fixes 2012-08-22 13:19:44 +00:00
bancika cd3b03433f Image fixes 2012-08-22 13:19:38 +00:00
bancika 547fb9b44f Undo-redo repeated several times messes up selection 2012-08-22 11:14:08 +00:00
bancika 78d76197cf Undo-redo repeated several times messes up selection 2012-08-22 11:14:03 +00:00
bancika e351d2669d Two components are created instead of one 2012-08-22 10:25:53 +00:00
bancika 9209782401 Better sorting in the BOM (e.g. R2 should go before R10)
Better Audo-Edit
2012-08-22 10:16:44 +00:00
bancika c406632299 Better sorting in the BOM (e.g. R2 should go before R10)
Better Audo-Edit
2012-08-22 10:16:19 +00:00
bancika 23fc091667 Better sorting in the BOM (e.g. R2 should go before R10)
Better Audo-Edit
2012-08-22 10:16:07 +00:00
bancika 6e6d70fcd3 Rectangle selection triggers file (modified) state 2012-08-21 21:53:21 +00:00
bancika 56fef06b22 removed unused libs 2012-08-21 15:30:40 +00:00
bancika 4897b803b6 2012-08-21 14:43:10 +00:00
bancika 6c698e935e Replaced deep cloning library with manual implementation 2012-08-21 14:16:19 +00:00
bancika 1645eae18d Replaced deep cloning library with manual implementation 2012-08-21 14:16:07 +00:00
bancika 5adbc2c6ca Some components can be placed in any layer using Send to Back/Bring to Front 2012-08-21 11:06:19 +00:00
bancika e3b1f0d4e6 Some components can be placed in any layer using Send to Back/Bring to Front 2012-08-21 11:06:08 +00:00
bancika bc88253c70 Some components can be placed in any layer using Send to Back/Bring to Front 2012-08-21 11:05:59 +00:00
bancika 1d45bf345c 2012-08-21 08:58:36 +00:00
bancika c61ec71ee1 2012-08-21 08:58:19 +00:00
bancika 35272c1339 check if the app is run from Jar directly 2012-08-21 08:53:41 +00:00
bancika 93e057dfb2 [Improvement] Improved overall performance
[Bug Fix] Should be more stable under OSX and not crash unexpectedly
2012-08-21 08:32:18 +00:00
bancika aef5c88a3f [Improvement] Improved overall performance
[Bug Fix] Should be more stable under OSX and not crash unexpectedly
2012-08-21 08:32:11 +00:00
bancika 591bdd313c [Improvement] Improved overall performance
[Bug Fix] Should be more stable under OSX and not crash unexpectedly
2012-08-21 08:32:04 +00:00
bancika 3f9caf9918 [Improvement] Improved overall performance
[Bug Fix] Should be more stable under OSX and not crash unexpectedly
2012-08-21 08:29:27 +00:00
bancika 246decdf7c [Improvement] Improved overall performance
[Bug Fix] Should be more stable under OSX and not crash unexpectedly
2012-08-21 08:29:17 +00:00
bancika 0bc8141dc7 [Improvement] Improved overall performance
[Bug Fix] Should be more stable under OSX and not crash unexpectedly
2012-08-21 08:28:55 +00:00
bancika 6e8e8b9d49 release build 2012-08-20 09:49:51 +00:00
bancika c8ff6afe6e release build 2012-08-20 09:33:54 +00:00
bancika 714740da28 release build 2012-08-20 09:33:44 +00:00
bancika 45b759fa75 2012-08-17 15:56:41 +00:00
bancika 2445f05767 2012-08-17 15:39:49 +00:00
bancika 22578a4e3f 2012-08-17 14:57:22 +00:00
bancika 10a42b7fcf Better unsaved warning message 2012-08-17 14:51:14 +00:00
bancika 0498eb2c51 Better unsaved warning message 2012-08-17 14:51:05 +00:00
bancika d384711759 UNICODE font export to PDF files 2012-08-17 14:26:22 +00:00
bancika 5e0c422c30 UNICODE font export to PDF files 2012-08-17 14:26:06 +00:00
bancika 73cc182dad UNICODE font export to PDF files 2012-08-17 14:25:55 +00:00
bancika 7932657fb2 Transistors can show name or value 2012-08-17 13:28:07 +00:00
bancika 50bacee70a Transistors can show name or value 2012-08-17 13:27:59 +00:00
bancika 1c0219f4bf 2012-08-17 13:07:55 +00:00
bancika 4522d9aeb5 Faster component placement, auto-focus on "Value" box 2012-08-17 12:56:35 +00:00
bancika a25d43b710 Default resistor value to 100k 2012-08-17 12:55:36 +00:00
bancika 18261eab69 Control number of "Recently Used" items from config.properties 2012-08-17 12:35:15 +00:00
bancika 3b984d0850 Control number of "Recently Used" items from config.properties 2012-08-17 12:35:11 +00:00
bancika d72d898f3f Control number of "Recently Used" items from config.properties 2012-08-17 12:31:03 +00:00
bancika 03bc58eb96 Control number of "Recently Used" items from config.properties 2012-08-17 12:30:55 +00:00
bancika 17427a0071 2012-08-17 12:17:19 +00:00
bancika 39704e3625 Improved "Recently Used" toolbox, doesn't jump as you click 2012-08-17 11:38:01 +00:00
bancika 6ef7459d46 Move selected components with arrow keys (and ctrl/shift) 2012-08-17 10:41:31 +00:00
bancika a6448676f7 Move selected components with arrow keys (and ctrl/shift) 2012-08-17 10:41:19 +00:00
bancika 4cf6f9f4a5 Remove junk from BOM (eyelets, wires, traces) 2012-08-16 15:56:58 +00:00
bancika 162b67bf25 Remove junk from BOM (eyelets, wires, traces) 2012-08-16 15:51:21 +00:00
bancika ccc90dd3a6 Remove junk from BOM (eyelets, wires, traces) 2012-08-16 15:50:59 +00:00
bancika 237639b9a1 Remove junk from BOM (eyelets, wires, traces) 2012-08-16 15:50:46 +00:00
bancika 37b89fe3a2 2012-08-16 14:40:10 +00:00
bancika 860bb0071b improved toolbar click reliability 2012-08-16 14:32:37 +00:00
bancika 56fd800e77 added .diy associations 2012-08-16 11:03:46 +00:00
bancika 1a95e43f9f added .diy associations 2012-08-16 11:02:26 +00:00
bancika 9817aa549e added .diy associations 2012-08-16 10:58:53 +00:00
bancika c38bd87a7d Right click rotates component while laying out on the canvas 2012-08-16 10:24:00 +00:00
bancika 21e46b3835 Right click rotates component while laying out on the canvas 2012-08-16 10:23:51 +00:00
bancika 6a4508b4a9 2012-08-16 09:28:01 +00:00
bancika 33d3e03ffb minor changes 2012-08-16 09:27:05 +00:00
bancika 98c3804529 minor changes 2012-08-16 09:26:55 +00:00
bancika 4f88bb988a copy-paste performance improvement 2012-08-15 21:18:31 +00:00
bancika 5a4eeb2de2 graphics fix 2012-08-15 21:18:14 +00:00
bancika abf99285cf switch terminal size improvement 2012-03-31 17:12:13 +00:00
bancika e83a2bd5f8 removed beta 2012-03-30 01:58:24 +00:00
bancika 445a56f563 improved bring to front/back 2012-03-29 02:36:34 +00:00
bancika aa434048f3 9v battery snap 2012-03-28 02:04:08 +00:00
bancika 1b043abfe5 description update 2012-03-28 01:50:01 +00:00
bancika b08395ee27 lever guitar switch 2012-03-27 02:36:31 +00:00
bancika a23342f682 2012-03-22 01:05:20 +00:00
bancika 93a4978e68 single coil pickup 2012-03-21 02:42:12 +00:00
bancika 0d845677c4 added humbucker pickup 2012-03-19 00:33:47 +00:00
bancika ab10103e41 added humbucker pickup 2012-03-19 00:15:56 +00:00
bancika 0d17046170 add OS version to log 2012-03-18 13:39:10 +00:00
bancika 880e618e30 Fonts are exported to PDF 2012-03-18 02:16:20 +00:00
bancika 176abc2428 Plastic DC jack 2012-03-17 23:47:15 +00:00
bancika 061bc520c6 Plastic DC jack 2012-03-17 02:21:26 +00:00
bancika 9c9d6ecd70 Plastic DC jack 2012-03-17 02:15:24 +00:00
bancika d9f5e2e42b Plastic DC jack 2012-03-17 02:02:53 +00:00
bancika 0c1659cde0 added closed jack 2012-03-17 00:29:28 +00:00
bancika 53feb60b63 added closed jack 2012-03-17 00:17:22 +00:00
bancika 8c2700b92c added closed jack 2012-03-17 00:17:06 +00:00
bancika 298d575696 added cliff style jack 2012-03-15 01:58:41 +00:00
bancika 931138083f added cliff style jack 2012-03-15 01:19:28 +00:00
bancika f2a814e41c added cliff style jack 2012-03-15 00:56:20 +00:00
bancika d07965a3c0 added ground symbol 2012-03-11 17:15:27 +00:00
bancika 9e1f5c3ac8 added ground symbol 2012-03-11 17:11:51 +00:00
bancika 569a50e97a utf-8 2012-03-10 13:28:07 +00:00
bancika 80e7e3a487 2012-03-10 13:27:42 +00:00
bancika 5d73617af3 2012-03-10 04:09:25 +00:00
bancika 8169e3a6ba BJT symbol 2012-03-10 04:03:44 +00:00
bancika a7b48f4f52 BJT symbol 2012-03-10 03:47:30 +00:00
bancika 89bf22bcf8 UTF-8 2012-03-10 02:58:49 +00:00
bancika ae99ce2702 use UTF-8 2012-03-10 01:14:01 +00:00
bancika 61937d6d42 Add IC symbol 2012-03-05 03:11:45 +00:00
bancika e618a1e1ad Add IC symbol 2012-03-04 23:22:47 +00:00
bancika 513a229e64 Added MOSFET Symbol 2012-03-04 23:16:44 +00:00
bancika f834aa6d0b Added JFET Symbol 2012-03-04 23:03:41 +00:00
bancika 35d8b13d41 Added MOSFET Symbol 2012-03-04 22:42:33 +00:00
bancika 989e0a03e4 Added MOSFET Symbol 2012-03-04 22:41:37 +00:00
bancika c6cb77f4ef Added MOSFET Symbol 2012-03-04 22:37:05 +00:00
bancika af1a11e848 Added MOSFET Symbol 2012-03-04 22:32:42 +00:00
bancika 4bcff4a574 2012-03-04 18:43:36 +00:00
bancika 36f65423e0 Add IC symbol 2012-03-04 18:35:00 +00:00
bancika ef11c931a7 2012-03-04 16:28:54 +00:00
bancika 732a9954b7 Add IC symbol 2012-03-04 15:09:53 +00:00
bancika 2b5b904d8d IC component can display name or value 2012-03-04 15:09:43 +00:00
bancika 6ca16d07e6 Application breaks when resistance is set to 0 ohms 2012-03-04 15:09:12 +00:00
bancika 4f113f032d fixed out of bounds exc 2012-03-04 14:27:10 +00:00
bancika e572412f1e fixed to use new file paths 2012-02-26 13:40:03 +00:00
bancika dd9e9f054c Expand selection feature, useful for debugging
Limit length of text in the status bar using "and X more" suffix
2012-02-26 03:54:12 +00:00
bancika 4ee7381959 2012-02-20 03:22:01 +00:00
bancika d11a8b906a Do not hard-code voltage and power ratings 2012-02-12 18:45:34 +00:00
bancika 9fdd96c889 R instead of omega for resistance 2012-02-12 18:13:32 +00:00
bancika d776a3df32 2012-02-12 15:26:30 +00:00
bancika ebf06841a0 Select components from context menu even when they are under other components 2012-02-12 14:36:18 +00:00
bancika 616b09b4b2 2012-02-12 05:21:57 +00:00
bancika dccd91e56b Imperial ruler is divided to .1" instead of 1/4" 2012-02-12 05:17:08 +00:00
bancika 59c543da34 2012-02-12 03:54:24 +00:00
bancika 7c933fa0f3 v1 import improvements 2012-02-12 03:53:50 +00:00
bancika 8294caa8ba Smarter resistor labels; try not to overlap label with bands 2012-02-11 14:07:05 +00:00
bancika a7637767cd 2012-02-10 04:24:53 +00:00
bancika 2dccd41f41 do not put space between value and multiplier K, M, etc 2012-02-10 04:23:10 +00:00
bancika 2dfec28dc9 perfboards can show coordinates 2012-02-10 03:17:42 +00:00
bancika fe527eece2 2012-02-08 05:02:10 +00:00
bancika d459ea898c ctrl+shift toggles snap to grid 2012-02-08 04:48:31 +00:00
bancika 19cfca3df8 2012-02-08 04:48:08 +00:00
bancika 3d3a6e27d2 2012-02-02 04:30:25 +00:00
bancika 10884452fd 2012-02-02 04:29:45 +00:00
bancika 6d4c2a8141 2012-02-02 04:29:37 +00:00
bancika 66f4d98ff9 add more pin options 2012-02-02 04:26:59 +00:00
bancika a00028131f Adjustable solder pad hole size 2011-09-03 20:01:09 +00:00
bancika 7f2b973638 Better lead and label rendering when lead spacing is smaller than component body 2011-09-03 19:47:35 +00:00
bancika 144bfb01ad Select All should not include locked components 2011-09-03 19:38:15 +00:00
bancika 84d0da6308 Renumber function sometimes doesn't work as expected 2011-09-03 19:19:07 +00:00
bancika 0df3bc37a0 increase PNG resolution to 300dpi 2011-09-03 19:07:19 +00:00
bancika a0b43def22 move to new project directory names 2011-08-29 22:14:50 +00:00
bancika 602c98ead4 move to new project directory names 2011-08-29 21:41:09 +00:00
bancika 4b64917654 move to new project directory names 2011-08-29 21:16:26 +00:00
bancika 030ba71126 2011-08-29 21:16:09 +00:00
bancika eb4d08be68 move to new project directory names 2011-08-29 21:10:45 +00:00
bancika b642dc6cbd move to new project directory names 2011-08-29 20:57:51 +00:00
bancika 112bfdd3d0 move to new project directory names 2011-08-29 20:54:36 +00:00
bancika 79f83308d8 move to new project directory names 2011-08-29 20:46:53 +00:00
bancika 5df467a254 2011-08-28 21:43:25 +00:00
bancika 7c4d82b28c added recently used tab 2011-08-28 21:31:49 +00:00
bancika 6b7d1c4277 Renumber selected components by X or Y axis 2011-08-28 17:09:10 +00:00
bancika a0ae53d53c fixed method finding issues 2011-08-28 16:23:35 +00:00
bancika bd79ef2817 Component edit dialog allows changing property values even when they are not the same 2011-08-28 16:10:38 +00:00
bancika 69e2296c23 show mutual properties across different component types 2011-08-27 20:36:37 +00:00
bancika 7d3a7c30ca check file permission before using auto-save 2011-08-26 18:31:36 +00:00
bancika bea19f326c Auto-increment component names when copy-pasting 2011-08-26 18:18:53 +00:00
bancika ba694add0c allow 0 ohm resistors 2011-08-26 17:59:50 +00:00
bancika f137a398dc double click on a component button to select all of that type 2011-08-26 17:56:33 +00:00
bancika 15ac8ff2e9 increase PNG resolution 2011-08-07 19:23:50 +00:00
bancika 1213dcaeac increase PNG resolution 2011-08-07 19:23:23 +00:00
bancika 2ebcd1fe96 ctrl+click should never clear selection 2011-08-07 19:07:19 +00:00
bancika 943d123ca9 outline mode
improved auto-create for pads
2011-03-05 19:53:19 +00:00
bancika 79c29dc349 2011-03-03 21:05:47 +00:00
bancika 746b5fbe1a 2011-03-03 20:56:56 +00:00
bancika 365c195091 fix for drawing area and optimization 2011-03-02 18:14:39 +00:00
bancika d89a500a5f fix for drawing area and optimization 2011-03-02 18:13:34 +00:00
bancika 085732fb2c 2011-03-01 00:17:53 +00:00
bancika eab7654883 Curved traces and wires can have 2, 3 and 4 control points 2011-02-28 00:09:13 +00:00
bancika 5488657984 config menu order 2011-02-27 23:38:11 +00:00
bancika 1a256716db tube socket improvement 2011-02-27 23:30:05 +00:00
bancika 2b9c76e876 add file version info
improve image serialization
serialize points referenced in inches
2011-02-27 23:26:11 +00:00
bancika 5ae8a3477e add file version info
improve image serialization
serialize points referenced in inches
2011-02-27 23:23:51 +00:00
bancika 209e970c00 catch drag end outside the area 2011-02-27 22:56:40 +00:00
bancika ae96fb9eef label has editable font 2011-02-27 21:58:57 +00:00
bancika 401f2b5e6f label has editable font 2011-02-27 21:56:08 +00:00
bancika e2da0b884d vertical vero board 2011-02-27 20:48:18 +00:00
bancika bcf390b888 switchable wheel zoom 2011-02-27 19:25:39 +00:00
bancika 144e8f0cfe standing resistors, capacitors and diodes 2011-02-27 19:09:15 +00:00
bancika 84d744a80b switchable wheel zoom 2011-02-27 18:34:33 +00:00
bancika 5430ca71a3 added 6 pin IC 2011-02-26 21:12:45 +00:00
bancika 4665d5d42e added tube 2011-02-26 21:05:40 +00:00
bancika 275918d079 dnd collision improvement 2011-02-26 15:35:53 +00:00
bancika a83093519f 2011-02-26 11:30:05 +00:00
bancika 2e14929eb1 send to back/front renamed 2011-02-26 11:28:40 +00:00
bancika a0b7cdc30e auto-save added 2011-02-26 11:26:49 +00:00
bancika ab5c9ad143 code cleanup 2011-02-24 00:05:27 +00:00
bancika 4154225e71 auto-edit mode 2011-02-24 00:02:32 +00:00
bancika 3856af3e18 continuous component creation 2011-02-23 23:44:00 +00:00
bancika 80e7ebcbe9 auto-create pads 2011-02-23 20:42:40 +00:00
bancika abdf02eac8 configurable snap to grid 2011-02-18 22:17:03 +00:00
bancika 746aadd8a2 improve bring to front/send to back 2011-02-18 13:17:56 +00:00
bancika ac4496040f improve bring to front/send to back 2011-02-18 13:16:58 +00:00
bancika d810096030 relax logging 2011-02-16 19:10:57 +00:00
bancika 4727017be7 fix for default browser 2011-02-15 20:36:18 +00:00
bancika b2dae15ee6 fix for default browser 2011-02-15 19:18:01 +00:00
bancika 56e112ff81 don't show grid on the thumbnail 2011-02-13 11:46:53 +00:00
bancika 6f5926e18e removed unused theme members 2011-02-13 09:43:27 +00:00
bancika b1f4773b10 2011-02-12 20:59:04 +00:00
bancika e5d33fb80d switchable sticky points
added themes
fixed ruler precision
improved board rendering
2011-02-12 20:35:09 +00:00
bancika b8545d27a1 line tracing fix 2011-02-06 20:38:21 +00:00
bancika 70ac30473b use clip to improve performance 2011-02-06 18:27:50 +00:00
bancika 4774e97ba2 use clip to improve performance 2011-02-06 18:22:30 +00:00
bancika de7378c722 2011-02-06 16:23:29 +00:00
bancika e2b3ed1b0e configurable render quality 2011-02-06 16:01:57 +00:00
bancika 99d38feb1c improved speed 2011-02-03 23:42:07 +00:00
bancika a561f6a3f9 tweaked boards 2011-02-03 23:10:23 +00:00
bancika 6eee1525ee better scaling
added marshall board and trimmer
2011-02-03 21:47:16 +00:00
bancika 02d38bed01 added eyelet/turret 2011-01-31 22:47:21 +00:00
bancika b96bad2688 cleanup component area map on loading
fixed lead area mapping bug
2011-01-31 22:05:05 +00:00
bancika 12ca93e2c9 fixed color code rounding 2011-01-31 21:49:01 +00:00
bancika d9b9542883 configurable jumper color 2011-01-31 20:03:41 +00:00
bancika 9e04cff806 fixed lead alignment issue 2011-01-31 20:03:22 +00:00
bancika 16600328cc copy paste doesn't work for some components 2011-01-31 19:32:18 +00:00
bancika 85d7d8a450 fixed lead alignment issue 2011-01-31 00:19:57 +00:00
bancika f358b5d87b fixed lead alignment issue 2011-01-31 00:18:39 +00:00
bancika fa02280292 code cleanup 2011-01-30 23:45:25 +00:00
bancika 8ea53b6876 added capacitor symbol 2011-01-30 23:35:07 +00:00
bancika 4d6e994555 added resistor wattage and capacitor voltage 2011-01-30 21:50:24 +00:00
bancika 10581c51fb added abstract class for leaded schematic symbols and resistor symbol 2011-01-30 21:33:08 +00:00
bancika 2cf6b573a7 added abstract class for leaded schematic symbols and resistor symbol 2011-01-30 21:31:42 +00:00
762 changed files with 37442 additions and 2143 deletions
@@ -9,9 +9,9 @@
<classpathentry kind="lib" path="lib/iText-2.1.7.jar"/>
<classpathentry kind="lib" path="lib/cloning-1.5.jar"/>
<classpathentry kind="lib" path="lib/objenesis-1.1.jar"/>
<classpathentry kind="lib" path="lib/bancika-gui-framework.jar"/>
<classpathentry kind="lib" path="lib/jettison-1.0.1.jar"/>
<classpathentry kind="lib" path="lib/poi-3.5-FINAL-20090928.jar"/>
<classpathentry kind="lib" path="library/main.jar"/>
<classpathentry kind="lib" path="lib/bancika-gui-framework.jar"/>
<classpathentry kind="output" path="bin"/>
</classpath>
@@ -0,0 +1 @@
/bin/
@@ -0,0 +1,86 @@
<map>
<entry>
<string>default.org.diylc.components.passive.TrimmerPotentiometer:Type</string>
<org.diylc.components.passive.TrimmerPotentiometer_-TrimmerType>FLAT_LARGE</org.diylc.components.passive.TrimmerPotentiometer_-TrimmerType>
</entry>
<entry>
<string>lastPath</string>
<string>C:\Documents and Settings\Branislav Stojkovic\My Documents\Downloads</string>
</entry>
<entry>
<string>abnormalExit</string>
<boolean>false</boolean>
</entry>
<entry>
<string>stickyPoints</string>
<boolean>true</boolean>
</entry>
<entry>
<string>theme</string>
<org.diylc.core.Theme>
<name>Light</name>
<bgColor>
<red>255</red>
<green>255</green>
<blue>255</blue>
<alpha>255</alpha>
</bgColor>
<gridColor>
<red>240</red>
<green>240</green>
<blue>240</blue>
<alpha>240</alpha>
</gridColor>
<outlineColor>
<red>0</red>
<green>0</green>
<blue>0</blue>
<alpha>255</alpha>
</outlineColor>
</org.diylc.core.Theme>
</entry>
<entry>
<string>antiAliasing</string>
<boolean>true</boolean>
</entry>
<entry>
<string>snapToGrid</string>
<boolean>true</boolean>
</entry>
<entry>
<string>hiQualityRender</string>
<boolean>false</boolean>
</entry>
<entry>
<string>outline</string>
<boolean>true</boolean>
</entry>
<entry>
<string>exportGrid</string>
<boolean>true</boolean>
</entry>
<entry>
<string>autoEdit</string>
<boolean>false</boolean>
</entry>
<entry>
<string>wheelZoom</string>
<boolean>false</boolean>
</entry>
<entry>
<string>default.org.diylc.components.misc.Label:Font Bold</string>
<boolean>false</boolean>
</entry>
<entry>
<string>autoCreatePads</string>
<boolean>true</boolean>
</entry>
<entry>
<string>continuousCreation</string>
<boolean>true</boolean>
</entry>
<entry>
<string>showTemplatesAtStartup</string>
<boolean>false</boolean>
</entry>
</map>
@@ -39,6 +39,8 @@ public class DIYLCStarter {
} catch (Exception e) {
LOG.error("Could not initialize log4j configuration", e);
}
LOG.debug("Java version: " + System.getProperty("java.runtime.version") + " by " + System.getProperty("java.vm.vendor"));
LOG.info("Starting DIYLC with working directory " + System.getProperty("user.dir"));
@@ -32,5 +32,9 @@ public enum DrawOption {
/**
* Anti-aliasing is used when drawing.
*/
ANTIALIASING;
ANTIALIASING,
/**
* Draw components in outline mode.
*/
OUTLINE_MODE;
}
@@ -11,6 +11,8 @@ import java.util.Set;
import org.diylc.core.IDIYComponent;
import org.diylc.core.Project;
import org.diylc.core.Theme;
import org.diylc.swing.plugins.edit.ComponentTransferable;
import com.diyfever.gui.simplemq.IMessageListener;
import com.diyfever.gui.simplemq.MessageDispatcher;
@@ -30,7 +32,20 @@ import com.diyfever.gui.update.VersionNumber;
*/
public interface IPlugInPort {
public static final String CHECK_BOX_MENU_ITEM = "org.diylc.checkBoxMenuItem";
public static final String ANTI_ALIASING_KEY = "antiAliasing";
public static final String HI_QUALITY_RENDER_KEY = "hiQualityRender";
public static final String EXPORT_GRID_KEY = "exportGrid";
public static final String STICKY_POINTS_KEY = "stickyPoints";
public static final String METRIC_KEY = "metric";
public static final String SNAP_TO_GRID_KEY = "snapToGrid";
public static final String AUTO_PADS_KEY = "autoCreatePads";
public static final String CONTINUOUS_CREATION_KEY = "continuousCreation";
public static final String AUTO_EDIT_KEY = "autoEdit";
public static final String ABNORMAL_EXIT_KEY = "abnormalExit";
public static final String WHEEL_ZOOM_KEY = "wheelZoom";
public static final String OUTLINE_KEY = "outline";
public static final String THEME_KEY = "theme";
public static final String RECENT_COMPONENTS_KEY = "recentComponents";
/**
* Returns size of the canvas that takes project dimensions into account as
@@ -86,8 +101,9 @@ public interface IPlugInPort {
* Saves the current project into the specified file.
*
* @param fileName
* @param isBackup
*/
void saveProjectToFile(String fileName);
void saveProjectToFile(String fileName, boolean isBackup);
/**
* @return the current file name.
@@ -154,8 +170,10 @@ public interface IPlugInPort {
* @param ctrlDown
* @param shiftDown
* @param altDown
* @param clickCount
*/
void mouseClicked(Point point, boolean ctrlDown, boolean shiftDown, boolean altDown);
void mouseClicked(Point point, boolean ctrlDown, boolean shiftDown, boolean altDown,
int clickCount);
/**
* Notifies the presenter that mouse is moved.
@@ -176,6 +194,15 @@ public interface IPlugInPort {
*/
List<IDIYComponent<?>> getSelectedComponents();
/**
* Updates the selection with the specified list of component. Also, updates
* control point map with all components that are stuck to the newly
* selected components.
*
* @param newSelection
*/
void updateSelection(List<IDIYComponent<?>> newSelection);
/**
* Selects all components in the project.
*/
@@ -260,14 +287,7 @@ public interface IPlugInPort {
*/
List<PropertyWrapper> getMutualSelectionProperties();
/**
* Applies specified properties to all the selected components. If some of
* the properties are not applicable to some of the selected components an
* exception will be thrown.
*
* @param properties
*/
void applyPropertiesToSelection(List<PropertyWrapper> properties);
void editSelection();
/**
* @return a list of editable properties of the current project.
@@ -328,4 +348,28 @@ public interface IPlugInPort {
* Brings each of the selected components one step to front.
*/
void bringSelectionToFront();
/**
* Causes the display to refresh.
*/
void refresh();
/**
* @return currently selected theme.
*/
Theme getSelectedTheme();
/**
* Changes the current theme.
*
* @param theme
*/
void setSelectedTheme(Theme theme);
/**
* Renumbers all the selected components.
*
* @param xAxisFirst
*/
void renumberSelectedComponents(boolean xAxisFirst);
}
@@ -0,0 +1,11 @@
package org.diylc.common;
public enum LabelPosition {
ABOVE, BELOW;
@Override
public String toString() {
return name().substring(0, 1) + name().substring(1).toLowerCase();
}
}
@@ -0,0 +1,11 @@
package org.diylc.common;
public enum OrientationHV {
VERTICAL, HORIZONTAL;
@Override
public String toString() {
return name().substring(0, 1) + name().substring(1).toLowerCase();
}
}
@@ -1,7 +1,6 @@
package org.diylc.common;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import org.diylc.core.IPropertyValidator;
@@ -16,12 +15,14 @@ public class PropertyWrapper implements Cloneable {
private String name;
private Class<?> type;
private Object value;
private Method setter;
private Method getter;
private String setter;
private String getter;
private boolean defaultable;
private IPropertyValidator validator;
private boolean unique = true;
private boolean changed = false;
public PropertyWrapper(String name, Class<?> type, Method getter, Method setter,
public PropertyWrapper(String name, Class<?> type, String getter, String setter,
boolean defaultable, IPropertyValidator validator) {
super();
this.name = name;
@@ -33,8 +34,8 @@ public class PropertyWrapper implements Cloneable {
}
public void readFrom(Object object) throws IllegalArgumentException, IllegalAccessException,
InvocationTargetException {
this.value = getter.invoke(object);
InvocationTargetException, SecurityException, NoSuchMethodException {
this.value = object.getClass().getMethod(getter).invoke(object);
}
// public void readUniqueFrom(IDIYComponent component)
@@ -47,8 +48,8 @@ public class PropertyWrapper implements Cloneable {
// }
public void writeTo(Object object) throws IllegalArgumentException, IllegalAccessException,
InvocationTargetException {
setter.invoke(object, value);
InvocationTargetException, SecurityException, NoSuchMethodException {
object.getClass().getMethod(setter, type).invoke(object, this.value);
}
public String getName() {
@@ -74,6 +75,22 @@ public class PropertyWrapper implements Cloneable {
public IPropertyValidator getValidator() {
return validator;
}
public boolean isUnique() {
return unique;
}
public void setUnique(boolean unique) {
this.unique = unique;
}
public boolean isChanged() {
return changed;
}
public void setChanged(boolean changed) {
this.changed = changed;
}
// @Override
// public Object clone() throws CloneNotSupportedException {
@@ -95,7 +112,6 @@ public class PropertyWrapper implements Cloneable {
result = prime * result + ((name == null) ? 0 : name.hashCode());
result = prime * result + ((setter == null) ? 0 : setter.hashCode());
result = prime * result + ((type == null) ? 0 : type.hashCode());
result = prime * result + ((value == null) ? 0 : value.hashCode());
return result;
}
@@ -130,11 +146,6 @@ public class PropertyWrapper implements Cloneable {
return false;
} else if (!type.equals(other.type))
return false;
if (value == null) {
if (other.value != null)
return false;
} else if (!value.equals(other.value))
return false;
return true;
}
@@ -2,6 +2,7 @@ package org.diylc.components;
import java.awt.Color;
import java.awt.Font;
import java.awt.Shape;
import org.diylc.core.IDIYComponent;
import org.diylc.core.annotations.EditableProperty;
@@ -19,11 +20,11 @@ public abstract class AbstractComponent<T> implements IDIYComponent<T> {
private static final long serialVersionUID = 1L;
protected String name = "";
public static Color SELECTION_COLOR = Color.red;
public static Color LABEL_COLOR = Color.black;
public static Color LABEL_COLOR_SELECTED = Color.red;
public static Font LABEL_FONT = new Font("Tahoma", Font.PLAIN, 12);
public static Font LABEL_FONT = new Font("Tahoma", Font.PLAIN, 14);
@EditableProperty(defaultable = false)
@Override
@@ -35,7 +36,7 @@ public abstract class AbstractComponent<T> implements IDIYComponent<T> {
public void setName(String name) {
this.name = name;
}
@Override
public boolean canControlPointOverlap(int index) {
return false;
@@ -53,7 +54,20 @@ public abstract class AbstractComponent<T> implements IDIYComponent<T> {
* @param x
* @return
*/
protected int getClosestOdd(int x) {
return (x / 2) * 2 + 1;
protected int getClosestOdd(double x) {
return ((int) x / 2) * 2 + 1;
}
/**
* @param clip
* @return true if none of the control points lie in the clip rectangle.
*/
protected boolean checkPointsClipped(Shape clip) {
for (int i = 0; i < getControlPointCount(); i++) {
if (clip.contains(getControlPoint(i))) {
return false;
}
}
return true;
}
}
@@ -24,12 +24,15 @@ public abstract class AbstractCurvedComponent<T> extends AbstractTransparentComp
public static Color GUIDELINE_COLOR = Color.blue;
public static Size DEFAULT_SIZE = new Size(1d, SizeUnit.in);
protected Point[] controlPoints = new Point[] { new Point(0, 0),
new Point(DEFAULT_SIZE.convertToPixels() / 2, 0),
new Point(DEFAULT_SIZE.convertToPixels() / 2, DEFAULT_SIZE.convertToPixels()),
new Point(DEFAULT_SIZE.convertToPixels(), DEFAULT_SIZE.convertToPixels()) };
protected Point[] controlPoints = new Point[] {
new Point(0, 0),
new Point((int) (DEFAULT_SIZE.convertToPixels() / 2), 0),
new Point((int) (DEFAULT_SIZE.convertToPixels() / 2), (int) (DEFAULT_SIZE
.convertToPixels())),
new Point((int) DEFAULT_SIZE.convertToPixels(), (int) DEFAULT_SIZE.convertToPixels()) };
protected Color color = getDefaultColor();
protected PointCount pointCount = PointCount.FOUR;
/**
* Draws the specified curve onto graphics.
@@ -37,6 +40,7 @@ public abstract class AbstractCurvedComponent<T> extends AbstractTransparentComp
* @param curve
* @param g2d
* @param componentState
* @param theme
*/
protected abstract void drawCurve(CubicCurve2D curve, Graphics2D g2d,
ComponentState componentState);
@@ -59,8 +63,11 @@ public abstract class AbstractCurvedComponent<T> extends AbstractTransparentComp
}
@Override
public void draw(Graphics2D g2d, ComponentState componentState, Project project,
IDrawingObserver drawingObserver) {
public void draw(Graphics2D g2d, ComponentState componentState, boolean outlineMode,
Project project, IDrawingObserver drawingObserver) {
if (checkPointsClipped(g2d.getClip())) {
return;
}
if (componentState == ComponentState.SELECTED || componentState == ComponentState.DRAGGING) {
// Do not track guidelines.
drawingObserver.stopTracking();
@@ -93,35 +100,133 @@ public abstract class AbstractCurvedComponent<T> extends AbstractTransparentComp
g2d.setComposite(oldComposite);
}
@EditableProperty(name = "Point Count")
public PointCount getPointCount() {
if (pointCount == null) {
pointCount = PointCount.FOUR;
}
return pointCount;
}
public void setPointCount(PointCount pointCount) {
this.pointCount = pointCount;
// Reset control points.
for (int i = 0; i < getControlPointCount(); i++) {
setControlPoint(getControlPoint(i), i);
}
}
@Override
public int getControlPointCount() {
return controlPoints.length;
switch (getPointCount()) {
case TWO:
return 2;
case THREE:
return 3;
case FOUR:
return 4;
}
return 0;
}
@Override
public boolean isControlPointSticky(int index) {
return index == 0 || index == 3;
return index == 0 || index == getControlPointCount() - 1;
}
@Override
public VisibilityPolicy getControlPointVisibilityPolicy(int index) {
return VisibilityPolicy.WHEN_SELECTED;
}
@Override
public boolean canControlPointOverlap(int index) {
// Only shape control points may overlap.
return index == 1 || index == 2;
switch (getPointCount()) {
case TWO:
return false;
case THREE:
return index == 1;
case FOUR:
return index == 1 || index == 2;
}
return false;
}
@Override
public Point getControlPoint(int index) {
if (index == 0) {
return controlPoints[0];
}
switch (getPointCount()) {
case TWO:
switch (index) {
case 1:
return controlPoints[3];
}
case THREE:
switch (index) {
case 1:
return controlPoints[1];
case 2:
return controlPoints[3];
}
case FOUR:
switch (index) {
case 1:
return controlPoints[1];
case 2:
return controlPoints[2];
case 3:
return controlPoints[3];
}
}
return controlPoints[index];
}
@Override
public void setControlPoint(Point point, int index) {
controlPoints[index].setLocation(point);
if (index == 0) {
controlPoints[0].setLocation(point);
} else {
switch (getPointCount()) {
case TWO:
switch (index) {
case 1:
Point center = new Point((point.x + controlPoints[0].x) / 2,
(point.y + controlPoints[0].y) / 2);
controlPoints[1].setLocation(center);
controlPoints[2].setLocation(center);
controlPoints[3].setLocation(point);
break;
}
break;
case THREE:
switch (index) {
case 1:
controlPoints[1].setLocation(point);
controlPoints[2].setLocation(point);
break;
case 2:
controlPoints[3].setLocation(point);
break;
}
break;
case FOUR:
switch (index) {
case 1:
controlPoints[1].setLocation(point);
break;
case 2:
controlPoints[2].setLocation(point);
break;
case 3:
controlPoints[3].setLocation(point);
break;
}
break;
}
}
}
@EditableProperty
@@ -133,4 +238,12 @@ public abstract class AbstractCurvedComponent<T> extends AbstractTransparentComp
this.color = color;
}
enum PointCount {
TWO, THREE, FOUR;
@Override
public String toString() {
return name().substring(0, 1) + name().substring(1).toLowerCase();
}
}
}
@@ -0,0 +1,336 @@
package org.diylc.components;
import java.awt.AlphaComposite;
import java.awt.Color;
import java.awt.Composite;
import java.awt.FontMetrics;
import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.Rectangle;
import java.awt.Shape;
import java.awt.geom.AffineTransform;
import java.awt.geom.Ellipse2D;
import java.awt.geom.Rectangle2D;
import org.diylc.common.Display;
import org.diylc.common.IPlugInPort;
import org.diylc.common.ObjectCache;
import org.diylc.core.ComponentState;
import org.diylc.core.IDrawingObserver;
import org.diylc.core.Project;
import org.diylc.core.Theme;
import org.diylc.core.VisibilityPolicy;
import org.diylc.core.annotations.EditableProperty;
import org.diylc.core.measures.Size;
import org.diylc.core.measures.SizeUnit;
import org.diylc.utils.Constants;
import com.diyfever.gui.miscutils.ConfigurationManager;
/**
* Base class for all leaded components such as resistors or capacitors. Has two
* control points and draws leads between them. Also, it positions and draws the
* shape of the component as specified by a child class.
*
* @author Branislav Stojkovic
*/
public abstract class AbstractLeadedComponent<T> extends AbstractTransparentComponent<T> {
private static final long serialVersionUID = 1L;
public static Color LEAD_COLOR = Color.decode("#236B8E");
public static Size LEAD_THICKNESS = new Size(0.6d, SizeUnit.mm);
public static Size DEFAULT_SIZE = new Size(1d, SizeUnit.in);
protected Size length;
protected Size width;
protected Point[] points = new Point[] {
new Point((int) (-DEFAULT_SIZE.convertToPixels() / 2), 0),
new Point((int) (DEFAULT_SIZE.convertToPixels() / 2), 0) };
protected Color bodyColor = Color.white;
protected Color borderColor = Color.black;
protected Color labelColor = LABEL_COLOR;
protected Display display = Display.VALUE;
protected AbstractLeadedComponent() {
super();
try {
this.length = getDefaultLength().clone();
this.width = getDefaultWidth().clone();
} catch (CloneNotSupportedException e) {
// This should never happen because Size supports cloning.
} catch (NullPointerException e) {
// This will happen if components do not have any shape.
}
}
@Override
public void draw(Graphics2D g2d, ComponentState componentState, boolean outlineMode,
Project project, IDrawingObserver drawingObserver) {
double distance = points[0].distance(points[1]);
Shape shape = getBodyShape();
// If there's no body, just draw the line connecting the ending points.
if (shape == null) {
drawLead(g2d, componentState);
} else if (supportsStandingMode()
&& length.convertToPixels() > points[0].distance(points[1])) {
// When ending points are too close draw the component in standing
// mode.
int width = getClosestOdd(this.width.convertToPixels());
Shape body = new Ellipse2D.Double(points[0].x - width / 2, points[0].y - width / 2,
width, width);
Composite oldComposite = g2d.getComposite();
if (alpha < MAX_ALPHA) {
g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 1f * alpha
/ MAX_ALPHA));
}
g2d.setColor(outlineMode ? Constants.TRANSPARENT_COLOR : bodyColor);
g2d.fill(body);
g2d.setComposite(oldComposite);
Color finalBorderColor;
if (outlineMode) {
Theme theme = (Theme) ConfigurationManager.getInstance().readObject(
IPlugInPort.THEME_KEY, Constants.DEFAULT_THEME);
finalBorderColor = componentState == ComponentState.SELECTED
|| componentState == ComponentState.DRAGGING ? SELECTION_COLOR : theme
.getOutlineColor();
} else {
finalBorderColor = componentState == ComponentState.SELECTED
|| componentState == ComponentState.DRAGGING ? SELECTION_COLOR
: borderColor;
}
g2d.setColor(finalBorderColor);
g2d.draw(body);
if (!outlineMode) {
drawLead(g2d, componentState);
}
} else {
// Normal mode with component body in the center and two lead parts.
Rectangle shapeRect = shape.getBounds();
Double theta = Math.atan2(points[1].y - points[0].y, points[1].x - points[0].x);
// Transform graphics to draw the body in the right place and at the
// right angle.
AffineTransform oldTransform = g2d.getTransform();
g2d.translate((points[0].x + points[1].x - shapeRect.width) / 2, (points[0].y
+ points[1].y - shapeRect.height) / 2);
g2d.rotate(theta, shapeRect.width / 2, shapeRect.height / 2);
// Draw body.
Composite oldComposite = g2d.getComposite();
if (alpha < MAX_ALPHA) {
g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 1f * alpha
/ MAX_ALPHA));
}
if (bodyColor != null) {
if (bodyColor != null) {
g2d.setColor(outlineMode ? Constants.TRANSPARENT_COLOR : bodyColor);
g2d.fill(shape);
}
}
decorateComponentBody(g2d, outlineMode);
g2d.setComposite(oldComposite);
g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(1));
Color finalBorderColor;
if (outlineMode) {
Theme theme = (Theme) ConfigurationManager.getInstance().readObject(
IPlugInPort.THEME_KEY, Constants.DEFAULT_THEME);
finalBorderColor = componentState == ComponentState.SELECTED
|| componentState == ComponentState.DRAGGING ? SELECTION_COLOR : theme
.getOutlineColor();
} else {
finalBorderColor = componentState == ComponentState.SELECTED
|| componentState == ComponentState.DRAGGING ? SELECTION_COLOR
: borderColor;
}
g2d.setColor(finalBorderColor);
g2d.draw(shape);
// Draw label.
g2d.setFont(LABEL_FONT);
Color finalLabelColor;
if (outlineMode) {
Theme theme = (Theme) ConfigurationManager.getInstance().readObject(
IPlugInPort.THEME_KEY, Constants.DEFAULT_THEME);
finalLabelColor = componentState == ComponentState.SELECTED
|| componentState == ComponentState.DRAGGING ? LABEL_COLOR_SELECTED : theme
.getOutlineColor();
} else {
finalLabelColor = componentState == ComponentState.SELECTED
|| componentState == ComponentState.DRAGGING ? LABEL_COLOR_SELECTED
: labelColor;
}
g2d.setColor(finalLabelColor);
FontMetrics fontMetrics = g2d.getFontMetrics();
String label = display == Display.NAME ? getName() : getValue().toString();
// Adjust label angle if needed to make sure that it's readable.
if ((theta >= Math.PI / 2 && theta <= Math.PI)
|| (theta < -Math.PI / 2 && theta > -Math.PI)) {
g2d.rotate(Math.PI, shapeRect.width / 2, shapeRect.height / 2);
}
Rectangle2D textRect = fontMetrics.getStringBounds(label, g2d);
g2d.drawString(label, (int) (shapeRect.width - textRect.getWidth()) / 2,
calculateLabelYCoordinate(shapeRect, textRect, fontMetrics));
// Go back to the original transformation to draw leads.
if (!outlineMode) {
g2d.setTransform(oldTransform);
int leadThickness = getClosestOdd(getLeadThickness());
double leadLength = (distance - shapeRect.width) / 2 - leadThickness / 2;
g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(leadThickness));
Color leadColor = shouldShadeLeads() ? getLeadColor(componentState).darker()
: getLeadColor(componentState);
g2d.setColor(leadColor);
int endX = (int) (points[0].x + Math.cos(theta) * leadLength);
int endY = (int) Math.round(points[0].y + Math.sin(theta) * leadLength);
g2d.drawLine(points[0].x, points[0].y, endX, endY);
endX = (int) (points[1].x + Math.cos(theta - Math.PI) * leadLength);
endY = (int) Math.round(points[1].y + Math.sin(theta - Math.PI) * leadLength);
g2d.drawLine(points[1].x, points[1].y, endX, endY);
if (shouldShadeLeads()) {
g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(leadThickness - 2));
leadColor = getLeadColor(componentState);
g2d.setColor(leadColor);
g2d.drawLine(points[0].x, points[0].y, (int) (points[0].x + Math.cos(theta)
* leadLength), (int) (points[0].y + Math.sin(theta) * leadLength));
g2d.drawLine(points[1].x, points[1].y, (int) (points[1].x + Math.cos(theta
- Math.PI)
* leadLength), (int) (points[1].y + Math.sin(theta - Math.PI)
* leadLength));
}
}
}
}
private void drawLead(Graphics2D g2d, ComponentState componentState) {
g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(getLeadThickness()));
Color leadColor = shouldShadeLeads() ? getLeadColor(componentState).darker()
: getLeadColor(componentState);
g2d.setColor(leadColor);
g2d.drawLine(points[0].x, points[0].y, points[1].x, points[1].y);
if (shouldShadeLeads()) {
g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(getLeadThickness() - 2));
leadColor = getLeadColor(componentState);
g2d.setColor(leadColor);
g2d.drawLine(points[0].x, points[0].y, points[1].x, points[1].y);
}
}
protected void decorateComponentBody(Graphics2D g2d, boolean outlineMode) {
// Do nothing.
}
protected int calculateLabelYCoordinate(Rectangle2D shapeRect, Rectangle2D textRect,
FontMetrics fontMetrics) {
return (int) (shapeRect.getHeight() - textRect.getHeight()) / 2 + fontMetrics.getAscent();
}
protected boolean shouldShadeLeads() {
return true;
}
protected boolean supportsStandingMode() {
return false;
}
/**
* @return default component length.
*/
protected abstract Size getDefaultLength();
/**
* Returns default component width.
*
* @return
*/
protected abstract Size getDefaultWidth();
/**
* @return shape that represents component body. Shape should not be
* transformed and should be referenced to (0, 0).
*/
protected abstract Shape getBodyShape();
/**
* @return default lead thickness. Override this method to change it.
*/
protected int getLeadThickness() {
return (int) LEAD_THICKNESS.convertToPixels();
}
/**
* @return default lead color. Override this method to change it.
*/
protected Color getLeadColor(ComponentState componentState) {
return componentState == ComponentState.SELECTED
|| componentState == ComponentState.DRAGGING ? SELECTION_COLOR : LEAD_COLOR;
}
@Override
public int getControlPointCount() {
return points.length;
}
@Override
public Point getControlPoint(int index) {
return (Point) points[index];
}
@Override
public boolean isControlPointSticky(int index) {
return true;
}
@Override
public VisibilityPolicy getControlPointVisibilityPolicy(int index) {
return VisibilityPolicy.ALWAYS;
}
@Override
public void setControlPoint(Point point, int index) {
points[index].setLocation(point);
}
@EditableProperty(name = "Color")
public Color getBodyColor() {
return bodyColor;
}
public void setBodyColor(Color bodyColor) {
this.bodyColor = bodyColor;
}
@EditableProperty(name = "Border")
public Color getBorderColor() {
return borderColor;
}
public void setBorderColor(Color borderColor) {
this.borderColor = borderColor;
}
@EditableProperty(name = "Length", defaultable = true)
public Size getLength() {
return length;
}
public void setLength(Size length) {
this.length = length;
}
@EditableProperty(name = "Width", defaultable = true)
public Size getWidth() {
return width;
}
public void setWidth(Size width) {
this.width = width;
}
@EditableProperty
public Display getDisplay() {
return display;
}
public void setDisplay(Display display) {
this.display = display;
}
}
@@ -0,0 +1,72 @@
package org.diylc.components;
import java.awt.Color;
import java.awt.FontMetrics;
import java.awt.geom.Rectangle2D;
import org.diylc.common.LabelPosition;
import org.diylc.core.ComponentState;
import org.diylc.core.annotations.EditableProperty;
public abstract class AbstractSchematicLeadedSymbol<T> extends AbstractLeadedComponent<T> {
private static final long serialVersionUID = 1L;
public static Color COLOR = Color.blue;
public static Color LEAD_COLOR = Color.black;
protected LabelPosition labelPosition = LabelPosition.ABOVE;
public AbstractSchematicLeadedSymbol() {
super();
// We don't want to fill the body, so use null.
this.bodyColor = null;
this.borderColor = COLOR;
}
@Override
public Color getBodyColor() {
return super.getBodyColor();
}
@Override
protected boolean shouldShadeLeads() {
return false;
}
@Override
protected int getLeadThickness() {
return 1;
}
@Override
protected int calculateLabelYCoordinate(Rectangle2D shapeRect, Rectangle2D textRect,
FontMetrics fontMetrics) {
if (labelPosition == LabelPosition.ABOVE) {
return -1;
} else {
return (int) (shapeRect.getHeight() + textRect.getHeight() - 1);
}
}
@EditableProperty(name = "Label position")
public LabelPosition getLabelPosition() {
return labelPosition;
}
@Override
@EditableProperty(name = "Color")
public Color getBorderColor() {
return super.getBorderColor();
}
public void setLabelPosition(LabelPosition labelPosition) {
this.labelPosition = labelPosition;
}
@Override
protected Color getLeadColor(ComponentState componentState) {
return componentState == ComponentState.SELECTED
|| componentState == ComponentState.DRAGGING ? SELECTION_COLOR : LEAD_COLOR;
}
}
@@ -103,10 +103,11 @@ public interface IDIYComponent<T> extends Serializable {
*
* @param g2d
* @param componentState
* @param outlineMode
* @param project
* @param drawingObserver
*/
void draw(Graphics2D g2d, ComponentState componentState, Project project,
void draw(Graphics2D g2d, ComponentState componentState, boolean outlineMode, Project project,
IDrawingObserver drawingObserver);
/**
@@ -1,5 +1,10 @@
package org.diylc.core;
import java.util.List;
import java.util.Set;
import org.diylc.common.PropertyWrapper;
/**
* Base interface for the main GUI component.
@@ -21,8 +26,13 @@ public interface IView {
public static final int NO_OPTION = 1;
public static final int CANCEL_OPTION = 2;
public static final int OK_OPTION = 0;
public static final String CHECK_BOX_MENU_ITEM = "org.diylc.checkBoxMenuItem";
public static final String RADIO_BUTTON_GROUP_KEY = "org.diylc.radioButtonGroup";
void showMessage(String message, String title, int messageType);
int showConfirmDialog(String message, String title, int optionType, int messageType);
boolean editProperties(List<PropertyWrapper> properties, Set<PropertyWrapper> defaultedProperties);
}
@@ -11,6 +11,8 @@ import org.diylc.core.annotations.PositiveMeasureValidator;
import org.diylc.core.measures.Size;
import org.diylc.core.measures.SizeUnit;
import com.diyfever.gui.update.VersionNumber;
/**
* Entity class that defines a project. Contains project properties and a
* collection of components.This class is serialized to file. Some filed getters
@@ -27,6 +29,8 @@ public class Project implements Serializable {
public static Size DEFAULT_HEIGHT = new Size(21d, SizeUnit.cm);
public static Size DEFAULT_GRID_SPACING = new Size(0.1d, SizeUnit.in);
private VersionNumber fileVersion;
private String title;
private String author;
private String description;
@@ -123,6 +127,14 @@ public class Project implements Serializable {
public Set<Integer> getLockedLayers() {
return lockedLayers;
}
public VersionNumber getFileVersion() {
return fileVersion;
}
public void setFileVersion(VersionNumber fileVersion) {
this.fileVersion = fileVersion;
}
@Override
public int hashCode() {
@@ -0,0 +1,86 @@
package org.diylc.core;
import java.awt.Color;
import java.io.Serializable;
public class Theme implements Serializable {
private static final long serialVersionUID = 1L;
private String name;
private Color bgColor;
private Color gridColor;
private Color outlineColor;
public Theme(String name, Color bgColor, Color gridColor, Color outlineColor) {
super();
this.name = name;
this.bgColor = bgColor;
this.gridColor = gridColor;
this.outlineColor = outlineColor;
}
public String getName() {
return name;
}
public Color getBgColor() {
return bgColor;
}
public Color getGridColor() {
return gridColor;
}
public Color getOutlineColor() {
return outlineColor;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((bgColor == null) ? 0 : bgColor.hashCode());
result = prime * result + ((gridColor == null) ? 0 : gridColor.hashCode());
result = prime * result + ((outlineColor == null) ? 0 : outlineColor.hashCode());
result = prime * result + ((name == null) ? 0 : name.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Theme other = (Theme) obj;
if (bgColor == null) {
if (other.bgColor != null)
return false;
} else if (!bgColor.equals(other.bgColor))
return false;
if (gridColor == null) {
if (other.gridColor != null)
return false;
} else if (!gridColor.equals(other.gridColor))
return false;
if (outlineColor == null) {
if (other.outlineColor != null)
return false;
} else if (!outlineColor.equals(other.outlineColor))
return false;
if (name == null) {
if (other.name != null)
return false;
} else if (!name.equals(other.name))
return false;
return true;
}
@Override
public String toString() {
return name;
}
}
@@ -10,7 +10,7 @@ public class PositiveMeasureValidator implements IPropertyValidator {
public void validate(Object value) throws ValidationException {
if (value instanceof AbstractMeasure) {
AbstractMeasure measure = (AbstractMeasure) value;
if (measure.getValue() <= 0) {
if (measure.getValue() < 0) {
throw new ValidationException("must be greater than zero.");
}
} else {
@@ -2,7 +2,7 @@ package org.diylc.core.measures;
public enum CapacitanceUnit implements Unit {
pF(1, "pF"), nF(1e3, "nF"), uF(1e6, "\u03bcF"), mF(1e9, "mF"), F(1e12, "F");
pF(1, "pF"), nF(1e3, "nF"), uF(1e6, "uF"), mF(1e9, "mF"), F(1e12, "F");
double factor;
String display;
@@ -49,15 +49,15 @@ public class Resistance extends AbstractMeasure<ResistanceUnit> {
switch (resistorColorCode) {
case _4_BAND:
bands = new Color[3];
bands[0] = COLOR_DIGITS[(int) Math.round(base / 10)];
bands[1] = COLOR_DIGITS[(int) Math.round(base % 10)];
bands[0] = COLOR_DIGITS[(int) (base / 10)];
bands[1] = COLOR_DIGITS[(int) (base % 10)];
bands[2] = COLOR_MULTIPLIER[multiplier + 2];
break;
case _5_BAND:
bands = new Color[4];
bands[0] = COLOR_DIGITS[(int) Math.round(base / 100)];
bands[1] = COLOR_DIGITS[(int) Math.round(base / 10 % 10)];
bands[2] = COLOR_DIGITS[(int) Math.round(base % 10)];
bands[0] = COLOR_DIGITS[(int) (base / 100)];
bands[1] = COLOR_DIGITS[(int) (base / 10 % 10)];
bands[2] = COLOR_DIGITS[(int) (base % 10)];
bands[3] = COLOR_MULTIPLIER[multiplier + 2];
break;
default:
@@ -16,13 +16,13 @@ public class Size extends AbstractMeasure<SizeUnit> implements Comparable<Size>
// TODO Auto-generated constructor stub
}
public int convertToPixels() {
public double convertToPixels() {
// double factor = getUnit().getFactor() / SizeUnit.in.getFactor();
// int grids = (int) (factor * getValue() * Constants.GRIDS_PER_INCH);
// double remainder = (factor * getValue() * Constants.GRIDS_PER_INCH) - grids;
// return (int) Math.round(Constants.PIXELS_PER_INCH / Constants.GRIDS_PER_INCH
// * (grids + remainder));
return (int) (getValue() * getUnit().getFactor() / SizeUnit.in.getFactor() * Constants.PIXELS_PER_INCH);
return getValue() * getUnit().getFactor() / SizeUnit.in.getFactor() * Constants.PIXELS_PER_INCH;
}
@Override
@@ -30,7 +30,8 @@ public enum IconLoader {
"faq.png"), Component("component.png"), Plugin("plugin.png"), Manual("manual.png"), Donate(
"donate.png"), Bug("bug.png"), IconLarge("icon_large.png"), IconMedium(
"icon_medium.png"), IconSmall("icon_small.png"), DocumentEdit("document_edit.png"), EditComponent(
"edit_component.png"), Size("size.png"), Front("front.png"), Back("back.png");
"edit_component.png"), Size("size.png"), Front("front.png"), Back("back.png"), Pens(
"pens.png"), Sort("sort.png");
protected String name;

Before

Width:  |  Height:  |  Size: 875 B

After

Width:  |  Height:  |  Size: 875 B

Before

Width:  |  Height:  |  Size: 729 B

After

Width:  |  Height:  |  Size: 729 B

Before

Width:  |  Height:  |  Size: 749 B

After

Width:  |  Height:  |  Size: 749 B

Before

Width:  |  Height:  |  Size: 736 B

After

Width:  |  Height:  |  Size: 736 B

Before

Width:  |  Height:  |  Size: 707 B

After

Width:  |  Height:  |  Size: 707 B

Before

Width:  |  Height:  |  Size: 714 B

After

Width:  |  Height:  |  Size: 714 B

Before

Width:  |  Height:  |  Size: 993 B

After

Width:  |  Height:  |  Size: 993 B

Before

Width:  |  Height:  |  Size: 537 B

After

Width:  |  Height:  |  Size: 537 B

Before

Width:  |  Height:  |  Size: 4.1 KiB

After

Width:  |  Height:  |  Size: 4.1 KiB

Before

Width:  |  Height:  |  Size: 863 B

After

Width:  |  Height:  |  Size: 863 B

Before

Width:  |  Height:  |  Size: 850 B

After

Width:  |  Height:  |  Size: 850 B

Before

Width:  |  Height:  |  Size: 708 B

After

Width:  |  Height:  |  Size: 708 B

Before

Width:  |  Height:  |  Size: 960 B

After

Width:  |  Height:  |  Size: 960 B

Before

Width:  |  Height:  |  Size: 901 B

After

Width:  |  Height:  |  Size: 901 B

Before

Width:  |  Height:  |  Size: 728 B

After

Width:  |  Height:  |  Size: 728 B

Before

Width:  |  Height:  |  Size: 595 B

After

Width:  |  Height:  |  Size: 595 B

Before

Width:  |  Height:  |  Size: 781 B

After

Width:  |  Height:  |  Size: 781 B

Before

Width:  |  Height:  |  Size: 914 B

After

Width:  |  Height:  |  Size: 914 B

Before

Width:  |  Height:  |  Size: 876 B

After

Width:  |  Height:  |  Size: 876 B

Before

Width:  |  Height:  |  Size: 853 B

After

Width:  |  Height:  |  Size: 853 B

Before

Width:  |  Height:  |  Size: 596 B

After

Width:  |  Height:  |  Size: 596 B

Before

Width:  |  Height:  |  Size: 765 B

After

Width:  |  Height:  |  Size: 765 B

Before

Width:  |  Height:  |  Size: 696 B

After

Width:  |  Height:  |  Size: 696 B

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 1.7 KiB

Before

Width:  |  Height:  |  Size: 845 B

After

Width:  |  Height:  |  Size: 845 B

Before

Width:  |  Height:  |  Size: 928 B

After

Width:  |  Height:  |  Size: 928 B

Before

Width:  |  Height:  |  Size: 697 B

After

Width:  |  Height:  |  Size: 697 B

Before

Width:  |  Height:  |  Size: 892 B

After

Width:  |  Height:  |  Size: 892 B

Before

Width:  |  Height:  |  Size: 751 B

After

Width:  |  Height:  |  Size: 751 B

Before

Width:  |  Height:  |  Size: 834 B

After

Width:  |  Height:  |  Size: 834 B

Before

Width:  |  Height:  |  Size: 857 B

After

Width:  |  Height:  |  Size: 857 B

Before

Width:  |  Height:  |  Size: 990 B

After

Width:  |  Height:  |  Size: 990 B

Before

Width:  |  Height:  |  Size: 842 B

After

Width:  |  Height:  |  Size: 842 B

Before

Width:  |  Height:  |  Size: 910 B

After

Width:  |  Height:  |  Size: 910 B

Some files were not shown because too many files have changed in this diff Show More