| Things to remember when contributing code to jdt ui: |
| |
| - legal issues: all code/icons/doc etc. that is _not_ authored by the contributor should be |
| indicated as such. we then need PMC approval, about.html etc. Ideally, there's no third-party code in the contribution. |
| |
| - all files must have appropriate copyright notices, indicating the original contributor |
| The triggering bug report number is good to have, for easier tracking. |
| |
| - code has to adhere to jdt ui's naming convention and honor our style conventions, like compact assignments |
| |
| - the contributor should write junit test cases and contribute them as well |
| |
| - for new views: all 1-view specific settings should be located as close to the view as possible. Often, |
| the view's dropdown menu (the triangle) is the right place. |
| |
| - for new views: adapters should be used, and standard jdt ui actions groups (ccp, source, refactor etc) added. |
| |
| - exceptions should be handled by using JavaPlugin or ExceptionHandler classes |
| |
| - general: no RuntimeExceptions or Errors should be caught in the code |
| |
| - in general, code should adhere to our 'endgame' standards: |
| --no calls to System.out.println |
| --no use of internal API |
| --no illegal subclassing of API classes |
| |
| --no unused imports [compiler opt], |
| --no unused private members [compiler opt], |
| --no ignored exceptions [compiler opt], |
| --no non-nls strings [compiler opt], |
| --no use of deprecated API [compiler opt] |
| --no methods with constructor name [compiler opt] |
| --no static references made in a non-static way [compiler opt] |
| --no 'methods overriden but package visible' [compiler opt] |
| --no hidden catch blocks [compiler opt] |
| --no-op assignments [compiler opt] |
| --no unreachable code [compiler opt] |
| --no unresolved imports [compiler opt] |
| --etc. |
| |
| - all translatable strings should be externalized - also plugin.xml |
| (note that .properties files should include copyright notices as well) |
| |
| - all actions, views, dialogs should have help context ids and register them |
| |
| - key bindings should not be hard-coded (by KeyListeners) - instead, the platform mechanism should be used |
| |
| - when appropriate, IJavaElements should be displays using JavaElementLabel provider. That way, they look consistent. |
| |
| - all menu entries, labels in dialogs etc should have unique mnemonics |
| |
| - all menu entries, toolbar tooltips, etc should use chapter capitalization |
| (note that it's OK to capitalize a short word if it's the last in the label) |
| |
| |
| |
| |
| Dumping some general Issues: |
| - don't submit a patch that has any warning (We have the rule that if we touch a file that has warnings, we also go and fix those, even if not created by us) |
| - make sure your code is formatted |
| - this should happen automatically if you use save actions |
| - example of wrong formatting: if (!<space>condition) |
| - however: do not format the whole file - only format the code you add or touch |
| - labels: |
| - must have mnemonic (use same if used in same button elsewhere if possible) |
| - never use (s) but have both forms, e.g. working set and working sets |
| - if only one, then show the name, e.g. delete working set 'foo' |
| - use single quotes when displaying a UI element |
| - never put UI strings into code: they must be externalized |
| - enable spell checking so you don't have typos like 'Dont' |
| |