aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichał Gołębiowski-Owczarek <m.goleb@gmail.com>2025-03-03 20:15:14 +0100
committerGitHub <noreply@github.com>2025-03-03 20:15:14 +0100
commit1da395de2e6759dfe9a7a199b03a39365e30f16c (patch)
treeb597281911de6cde1682932ca9c242c0f8b5841d
parent302b488b9214e14830496578f7cf0aebcc33c132 (diff)
downloadjquery-ui-1da395de2e6759dfe9a7a199b03a39365e30f16c.tar.gz
jquery-ui-1da395de2e6759dfe9a7a199b03a39365e30f16c.zip
Build: Update ESLint to v9, migrate to flat config, lint dist files
Dist files linting is limited to checking if they're proper ES5. Closes gh-2336
-rw-r--r--.eslintignore4
-rw-r--r--.eslintrc.json21
-rw-r--r--.github/workflows/node.js.yml7
-rw-r--r--Gruntfile.js5
-rw-r--r--demos/.eslintrc.json9
-rw-r--r--eslint.config.mjs162
-rw-r--r--package.json3
-rw-r--r--ui/.eslintrc.json42
-rw-r--r--ui/effect.js4
-rw-r--r--ui/effects/effect-explode.js2
-rw-r--r--ui/widgets/accordion.js2
-rw-r--r--ui/widgets/datepicker.js10
-rw-r--r--ui/widgets/progressbar.js2
-rw-r--r--ui/widgets/resizable.js2
-rw-r--r--ui/widgets/selectmenu.js2
-rw-r--r--ui/widgets/tabs.js4
16 files changed, 181 insertions, 100 deletions
diff --git a/.eslintignore b/.eslintignore
deleted file mode 100644
index 5e992599f..000000000
--- a/.eslintignore
+++ /dev/null
@@ -1,4 +0,0 @@
-dist/**/*
-external/**/*
-tests/lib/vendor/**/*
-ui/vendor/**/*
diff --git a/.eslintrc.json b/.eslintrc.json
deleted file mode 100644
index e7d67eb0e..000000000
--- a/.eslintrc.json
+++ /dev/null
@@ -1,21 +0,0 @@
-{
- "root": true,
-
- "extends": "jquery",
-
- // Uncomment to find useless comment disable directives
- // "reportUnusedDisableDirectives": true,
-
- "parserOptions": {
- "ecmaVersion": 2018
- },
-
- "env": {
- "es6": true,
- "node": true
- },
-
- "rules": {
- "strict": [ "error", "global" ]
- }
-}
diff --git a/.github/workflows/node.js.yml b/.github/workflows/node.js.yml
index 6279223a3..eef7c86e7 100644
--- a/.github/workflows/node.js.yml
+++ b/.github/workflows/node.js.yml
@@ -49,12 +49,13 @@ jobs:
- name: Install npm dependencies
run: npm install
- - name: Lint
- run: npm run lint
-
- name: Build
run: npm run build
+ # Lint must happen after build as we lint generated files.
+ - name: Lint
+ run: npm run lint
+
- name: Test
run: |
npm run test:unit -- \
diff --git a/Gruntfile.js b/Gruntfile.js
index cc532b6e9..bbb71d33e 100644
--- a/Gruntfile.js
+++ b/Gruntfile.js
@@ -204,9 +204,12 @@ grunt.initConfig( {
"ui/**/*.js",
"!ui/vendor/**/*.js",
"Gruntfile.js",
+ "dist/jquery-ui.js",
+ "dist/jquery-ui.min.js",
"build/**/*.js",
"tests/unit/**/*.js",
"tests/lib/**/*.js",
+ "!tests/lib/vendor/**/*.js",
"demos/**/*.js"
]
},
@@ -401,7 +404,7 @@ grunt.registerTask( "lint", [
"htmllint"
] );
grunt.registerTask( "build", [ "requirejs", "concat", "minify:main" ] );
-grunt.registerTask( "default", [ "lint", "build" ] );
+grunt.registerTask( "default", [ "build", "lint" ] );
grunt.registerTask( "sizer", [ "requirejs:js", "minify:main", "compare_size:all" ] );
grunt.registerTask( "sizer_all", [ "requirejs:js", "minify", "compare_size" ] );
diff --git a/demos/.eslintrc.json b/demos/.eslintrc.json
deleted file mode 100644
index 805ec8eb2..000000000
--- a/demos/.eslintrc.json
+++ /dev/null
@@ -1,9 +0,0 @@
-{
- "root": true,
-
- "extends": "../ui/.eslintrc.json",
-
- "globals": {
- "require": true
- }
-}
diff --git a/eslint.config.mjs b/eslint.config.mjs
new file mode 100644
index 000000000..4fb03f6b3
--- /dev/null
+++ b/eslint.config.mjs
@@ -0,0 +1,162 @@
+import jqueryConfig from "eslint-config-jquery";
+import globals from "globals";
+
+export default [
+ {
+ ignores: [
+ "dist/**/*",
+ "!dist/jquery-ui.js",
+ "!dist/jquery-ui.min.js",
+ "external/**/*",
+ "tests/lib/vendor/**/*",
+ "ui/vendor/**/*"
+ ]
+ },
+
+ {
+ ignores: [ "dist/**/*" ],
+ rules: {
+ ...jqueryConfig.rules,
+ "no-unused-vars": [
+ "error",
+ {
+ argsIgnorePattern: "^_",
+ caughtErrorsIgnorePattern: "^_"
+ }
+ ]
+ }
+ },
+
+ {
+ files: [ "Gruntfile.js" ],
+ languageOptions: {
+ ecmaVersion: "latest",
+ sourceType: "commonjs",
+ globals: {
+ ...globals.node
+ }
+ },
+ rules: {
+ strict: [ "error", "global" ]
+ }
+ },
+
+ {
+ files: [ "eslint.config.mjs" ],
+ languageOptions: {
+ ecmaVersion: "latest",
+ sourceType: "module",
+ globals: {
+ ...globals.node
+ }
+ },
+ rules: {
+ strict: [ "error", "global" ]
+ }
+ },
+
+ // Source, demos
+ {
+ files: [ "ui/**/*.js", "demos/**/*.js" ],
+ languageOptions: {
+ ecmaVersion: 5,
+ sourceType: "script",
+ globals: {
+ ...globals.browser,
+ ...globals.jquery,
+ define: false,
+ Globalize: false
+ }
+ },
+ rules: {
+ strict: [ "error", "function" ],
+
+ // The following rule is relaxed due to too many violations:
+ "no-unused-vars": [
+ "error",
+ {
+ args: "after-used",
+ argsIgnorePattern: "^_",
+ caughtErrorsIgnorePattern: "^_"
+ }
+ ],
+
+ // Too many violations:
+ camelcase: "off",
+ "no-nested-ternary": "off"
+ }
+ },
+ {
+ files: [ "ui/i18n/**/*.js" ],
+ rules: {
+
+ // We want to keep all the strings in separate single lines
+ "max-len": "off"
+ }
+ },
+
+ // Dist files
+ // For dist files, we don't include any jQuery rules on purpose.
+ // We just want to make sure the files are correct ES5.
+ {
+ files: [ "dist/jquery-ui.js", "dist/jquery-ui.min.js" ],
+ languageOptions: {
+ ecmaVersion: 5,
+ sourceType: "script"
+ },
+ linterOptions: {
+ reportUnusedDisableDirectives: "off"
+ }
+ },
+
+ // Build
+ {
+ files: [ "build/**/*.js" ],
+ languageOptions: {
+ ecmaVersion: "latest",
+ sourceType: "commonjs",
+ globals: {
+ ...globals.node
+ }
+ },
+ rules: {
+ "no-implicit-globals": "error",
+ strict: [ "error", "global" ]
+ }
+ },
+
+ // Demos
+ {
+ files: [ "demos/**/*.js" ],
+ languageOptions: {
+ globals: {
+ require: true
+ }
+ }
+ },
+
+ // Tests
+ {
+ files: [ "tests/**/*.js" ],
+ languageOptions: {
+ ecmaVersion: 5,
+ sourceType: "script",
+ globals: {
+ ...globals.browser,
+ ...globals.jquery,
+ define: false,
+ Globalize: false,
+ QUnit: false,
+ require: true,
+ requirejs: true
+ }
+ },
+ "rules": {
+
+ // Too many violations:
+ "max-len": "off",
+ "no-unused-vars": "off",
+ strict: "off" // ideally, `[ "error", "function" ]`
+ }
+ }
+];
diff --git a/package.json b/package.json
index c34bef799..00f9e07fe 100644
--- a/package.json
+++ b/package.json
@@ -58,13 +58,14 @@
"@swc/core": "1.11.5",
"commitplease": "3.2.0",
"eslint-config-jquery": "3.0.2",
+ "globals": "16.0.0",
"grunt": "1.6.1",
"grunt-bowercopy": "1.2.5",
"grunt-compare-size": "0.4.2",
"grunt-contrib-concat": "2.1.0",
"grunt-contrib-csslint": "2.0.0",
"grunt-contrib-requirejs": "1.0.0",
- "grunt-eslint": "24.0.1",
+ "grunt-eslint": "25.0.0",
"grunt-git-authors": "3.2.0",
"grunt-html": "17.1.0",
"jquery-test-runner": "0.2.5",
diff --git a/ui/.eslintrc.json b/ui/.eslintrc.json
deleted file mode 100644
index eaba81af2..000000000
--- a/ui/.eslintrc.json
+++ /dev/null
@@ -1,42 +0,0 @@
-{
- "root": true,
-
- "extends": "jquery",
-
- "parserOptions": {
- "ecmaVersion": 5
- },
-
- "env": {
- "browser": true,
- "jquery": true,
- "node": false
- },
-
- "rules": {
- "strict": [ "error", "function" ],
-
- // The following rule is relaxed due to too many violations:
- "no-unused-vars": [ "error", { "vars": "all", "args": "after-used" } ],
-
- // Too many violations:
- "camelcase": "off",
- "no-nested-ternary": "off"
- },
-
- "globals": {
- "define": false,
- "Globalize": false
- },
-
- "overrides": [
- {
- "files": [ "i18n/**/*.js" ],
- "rules": {
-
- // We want to keep all the strings in separate single lines
- "max-len": "off"
- }
- }
- ]
-}
diff --git a/ui/effect.js b/ui/effect.js
index bbbb733c3..cb9ab8043 100644
--- a/ui/effect.js
+++ b/ui/effect.js
@@ -9,9 +9,7 @@
//>>label: Effects Core
//>>group: Effects
-/* eslint-disable max-len */
//>>description: Extends the internal jQuery effects. Includes morphing and easing. Required by all other effects.
-/* eslint-enable max-len */
//>>docs: https://api.jqueryui.com/category/effects-core/
//>>demos: https://jqueryui.com/effect/
@@ -320,7 +318,7 @@ if ( $.uiBackCompat === true ) {
try {
// eslint-disable-next-line no-unused-expressions
active.id;
- } catch ( e ) {
+ } catch ( _e ) {
active = document.body;
}
diff --git a/ui/effects/effect-explode.js b/ui/effects/effect-explode.js
index ed40833a8..da38b4d55 100644
--- a/ui/effects/effect-explode.js
+++ b/ui/effects/effect-explode.js
@@ -9,9 +9,7 @@
//>>label: Explode Effect
//>>group: Effects
-/* eslint-disable max-len */
//>>description: Explodes an element in all directions into n pieces. Implodes an element to its original wholeness.
-/* eslint-enable max-len */
//>>docs: https://api.jqueryui.com/explode-effect/
//>>demos: https://jqueryui.com/effect/
diff --git a/ui/widgets/accordion.js b/ui/widgets/accordion.js
index ff6e4631d..43a50db83 100644
--- a/ui/widgets/accordion.js
+++ b/ui/widgets/accordion.js
@@ -9,9 +9,7 @@
//>>label: Accordion
//>>group: Widgets
-/* eslint-disable max-len */
//>>description: Displays collapsible content panels for presenting information in a limited amount of space.
-/* eslint-enable max-len */
//>>docs: https://api.jqueryui.com/accordion/
//>>demos: https://jqueryui.com/accordion/
//>>css.structure: ../../themes/base/core.css
diff --git a/ui/widgets/datepicker.js b/ui/widgets/datepicker.js
index 323723b89..029f255e8 100644
--- a/ui/widgets/datepicker.js
+++ b/ui/widgets/datepicker.js
@@ -1,4 +1,4 @@
-/* eslint-disable max-len, camelcase */
+/* eslint-disable max-len */
/*!
* jQuery UI Datepicker @VERSION
* https://jqueryui.com
@@ -535,7 +535,7 @@ $.extend( Datepicker.prototype, {
_getInst: function( target ) {
try {
return $.data( target, "datepicker" );
- } catch ( err ) {
+ } catch ( _err ) {
throw "Missing instance data for this datepicker";
}
},
@@ -768,7 +768,7 @@ $.extend( Datepicker.prototype, {
$.datepicker._updateAlternate( inst );
$.datepicker._updateDatepicker( inst );
}
- } catch ( err ) {
+ } catch ( _err ) {
}
}
return true;
@@ -1540,7 +1540,7 @@ $.extend( Datepicker.prototype, {
try {
date = this.parseDate( dateFormat, dates, settings ) || defaultDate;
- } catch ( event ) {
+ } catch ( _err ) {
dates = ( noDefault ? "" : dates );
}
inst.selectedDay = date.getDate();
@@ -1569,7 +1569,7 @@ $.extend( Datepicker.prototype, {
try {
return $.datepicker.parseDate( $.datepicker._get( inst, "dateFormat" ),
offset, $.datepicker._getFormatConfig( inst ) );
- } catch ( e ) {
+ } catch ( _e ) {
// Ignore
}
diff --git a/ui/widgets/progressbar.js b/ui/widgets/progressbar.js
index 20e96440a..ad5366ade 100644
--- a/ui/widgets/progressbar.js
+++ b/ui/widgets/progressbar.js
@@ -9,9 +9,7 @@
//>>label: Progressbar
//>>group: Widgets
-/* eslint-disable max-len */
//>>description: Displays a status indicator for loading state, standard percentage, and other progress indicators.
-/* eslint-enable max-len */
//>>docs: https://api.jqueryui.com/progressbar/
//>>demos: https://jqueryui.com/progressbar/
//>>css.structure: ../../themes/base/core.css
diff --git a/ui/widgets/resizable.js b/ui/widgets/resizable.js
index 6f1e0ebde..012315283 100644
--- a/ui/widgets/resizable.js
+++ b/ui/widgets/resizable.js
@@ -104,7 +104,7 @@ $.widget( "ui.resizable", $.ui.mouse, {
el[ scroll ] = 1;
has = ( el[ scroll ] > 0 );
el[ scroll ] = 0;
- } catch ( e ) {
+ } catch ( _e ) {
// `el` might be a string, then setting `scroll` will throw
// an error in strict mode; ignore it.
diff --git a/ui/widgets/selectmenu.js b/ui/widgets/selectmenu.js
index f1b48fa60..749e33491 100644
--- a/ui/widgets/selectmenu.js
+++ b/ui/widgets/selectmenu.js
@@ -9,9 +9,7 @@
//>>label: Selectmenu
//>>group: Widgets
-/* eslint-disable max-len */
//>>description: Duplicates and extends the functionality of a native HTML select element, allowing it to be customizable in behavior and appearance far beyond the limitations of a native select.
-/* eslint-enable max-len */
//>>docs: https://api.jqueryui.com/selectmenu/
//>>demos: https://jqueryui.com/selectmenu/
//>>css.structure: ../../themes/base/core.css
diff --git a/ui/widgets/tabs.js b/ui/widgets/tabs.js
index 7b7907c32..49468feb3 100644
--- a/ui/widgets/tabs.js
+++ b/ui/widgets/tabs.js
@@ -73,10 +73,10 @@ $.widget( "ui.tabs", {
// Decoding may throw an error if the URL isn't UTF-8 (#9518)
try {
anchorUrl = decodeURIComponent( anchorUrl );
- } catch ( error ) {}
+ } catch ( _error ) {}
try {
locationUrl = decodeURIComponent( locationUrl );
- } catch ( error ) {}
+ } catch ( _error ) {}
return anchor.hash.length > 1 && anchorUrl === locationUrl;
};
* Name.Variable */ .highlight .ow { color: #008800 } /* Operator.Word */ .highlight .w { color: #bbbbbb } /* Text.Whitespace */ .highlight .mb { color: #0000DD; font-weight: bold } /* Literal.Number.Bin */ .highlight .mf { color: #0000DD; font-weight: bold } /* Literal.Number.Float */ .highlight .mh { color: #0000DD; font-weight: bold } /* Literal.Number.Hex */ .highlight .mi { color: #0000DD; font-weight: bold } /* Literal.Number.Integer */ .highlight .mo { color: #0000DD; font-weight: bold } /* Literal.Number.Oct */ .highlight .sa { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Affix */ .highlight .sb { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Backtick */ .highlight .sc { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Char */ .highlight .dl { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Delimiter */ .highlight .sd { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Doc */ .highlight .s2 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Double */ .highlight .se { color: #0044dd; background-color: #fff0f0 } /* Literal.String.Escape */ .highlight .sh { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Heredoc */ .highlight .si { color: #3333bb; background-color: #fff0f0 } /* Literal.String.Interpol */ .highlight .sx { color: #22bb22; background-color: #f0fff0 } /* Literal.String.Other */ .highlight .sr { color: #008800; background-color: #fff0ff } /* Literal.String.Regex */ .highlight .s1 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Single */ .highlight .ss { color: #aa6600; background-color: #fff0f0 } /* Literal.String.Symbol */ .highlight .bp { color: #003388 } /* Name.Builtin.Pseudo */ .highlight .fm { color: #0066bb; font-weight: bold } /* Name.Function.Magic */ .highlight .vc { color: #336699 } /* Name.Variable.Class */ .highlight .vg { color: #dd7700 } /* Name.Variable.Global */ .highlight .vi { color: #3333bb } /* Name.Variable.Instance */ .highlight .vm { color: #336699 } /* Name.Variable.Magic */ .highlight .il { color: #0000DD; font-weight: bold } /* Literal.Number.Integer.Long */
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE pgml SYSTEM "pgml.dtd">
<pgml description="org.argouml.uml.diagram.static_structure.ui.UMLClassDiagram|-64--88-1-2-717d91:e7cd986e07:-7ffe"
      name="HSSFSerializerClassDiagram"
>
  <group name="Fig0"
       description="org.argouml.uml.diagram.static_structure.ui.FigClass[32, 24, 457, 329]"
       href="127-0-0-1-2264da:e955aac0a4:-7ffd"
       shown="7"
       fill="1"
       fillcolor="-1"
       stroke="1"
       strokecolor="-16777216"
  >
    <private>
    </private>
    <rectangle name="Fig0.0"
      x="32"
      y="24"
      width="457"
      height="328"
      fill="1"
      fillcolor="-1"
      stroke="1"
      strokecolor="-16777216"
    />
    <text name="Fig0.1"
      context=""
      x="10"
      y="10"
      fill="1"
      fillcolor="-1"
      stroke="1"
      strokecolor="-16777216"
      font="dialog"
      textsize="9"
    ></text>
    <text name="Fig0.2"
      context=""
      x="32"
      y="24"
      fill="1"
      fillcolor="-1"
      stroke="1"
      strokecolor="-16777216"
      font="dialog.italic"
      textsize="9"
    >POIFSSerializer</text>
    <rectangle name="Fig0.3"
      x="10"
      y="15"
      width="2"
      height="60"
      fill="1"
      fillcolor="-1"
      stroke="1"
      strokecolor="-1"
    />
    <text name="Fig0.4"
      context=""
      x="32"
      y="44"
      fill="1"
      fillcolor="-1"
      stroke="1"
      strokecolor="-16777216"
      font="dialog"
      textsize="9"
    >-_output_stream : OutputStream = null
-_locator : Locator = null
-_open_elements : Stack = new Stack()
-_filesystem : Filesystem = new Filesystem()</text>
    <text name="Fig0.5"
      context=""
      x="32"
      y="88"
      fill="1"
      fillcolor="-1"
      stroke="1"
      strokecolor="-16777216"
      font="dialog"
      textsize="9"
    >+startPrefixMapping(in ignoredPrefix:String, in ignoredUri:String)
+endPrefixMapping(in ignoredPrefix:String)
+processingInstruction(in ignoredTarget:String, in ignoredData:String)
+skippedEntity(in ignoredName:String)
+startDTD(in ignoredName:String, in ignoredPublicId:String, in ignoredSystemId:String)
+endDTD()
+startEntity(in ignoredName:String)
+endEntity(in ignoredName:String)
+startCDATA()
+endCDATA()
+comment(in ignoredCh[]:char, in ignoredStart:int, in ignoredLength:int)
+shouldSetContentLength() : boolean
+setOutputStream(in out:OutputStream)
+setDocumentLocator(in locator:Locator)
+startDocument()
+endDocument()
+startElement(in namespaceURI:String, in localName:String, in qName:String, in atts:Attributes)
+endElement(in namespaceURI:String, in localName:String, in qName:String)
+characters(in ch[]:char, in start:int, in length:int)
+ignorableWhitespace(in ch[]:char, in start:int, in length:int)
#getElementProcessorFactory() : ElementProcessorFactory
#doLocalPreEndDocument()
#doLocalPostEndDocument()
#getFilesystem() : Filesystem
#SAXExceptionFactory(in message:String, in e:Exception) : SAXException
#SAXExceptionFactory(in message:String) : SAXException</text>
  </group>
  <group name="Fig1"
       description="org.argouml.uml.diagram.static_structure.ui.FigClass[32, 680, 203, 119]"
       href="127-0-0-1-2264da:e957cbdec1:-7ffc"
       shown="7"
       fill="1"
       fillcolor="-1"
       stroke="1"
       strokecolor="-16777216"
  >
    <private>
    </private>
    <rectangle name="Fig1.0"
      x="32"
      y="680"
      width="203"
      height="118"
      fill="1"
      fillcolor="-1"
      stroke="1"
      strokecolor="-16777216"
    />
    <text name="Fig1.1"
      context=""
      x="10"
      y="10"
      fill="1"
      fillcolor="-1"
      stroke="1"
      strokecolor="-16777216"
      font="dialog"
      textsize="9"
    ></text>
    <text name="Fig1.2"
      context=""
      x="32"
      y="680"
      fill="1"
      fillcolor="-1"
      stroke="1"
      strokecolor="-16777216"
      font="dialog"
      textsize="9"
    >Attribute</text>
    <rectangle name="Fig1.3"
      x="10"
      y="15"
      width="2"
      height="60"
      fill="1"
      fillcolor="-1"
      stroke="1"
      strokecolor="-1"
    />
    <text name="Fig1.4"
      context=""
      x="32"
      y="700"
      fill="1"
      fillcolor="-1"
      stroke="1"
      strokecolor="-16777216"
      font="dialog"
      textsize="9"
    >-_name : String
-_value : String</text>
    <text name="Fig1.5"
      context=""
      x="32"
      y="724"
      fill="1"
      fillcolor="-1"
      stroke="1"
      strokecolor="-16777216"
      font="dialog"
      textsize="9"
    >+getName() : String
+getValue() : String
+getValueAsInt() : int
+getValueAsShort() : short
+getValueAsLong() : long
+getValueAsBoolean() : boolean
+Attribute(in name:String, in value:String)</text>
  </group>
  <group name="Fig2"
       description="org.argouml.uml.diagram.static_structure.ui.FigInterface[32, 600, 429, 67]"
       href="127-0-0-1-2264da:e957cbdec1:-7fed"
       shown="0"
       fill="1"
       fillcolor="-1"
       stroke="1"
       strokecolor="-16777216"
  >
    <private>
    </private>
    <rectangle name="Fig2.0"
      x="33"
      y="601"
      width="427"
      height="65"
      fill="1"
      fillcolor="-1"
      stroke="1"
      strokecolor="-16777216"
    />
    <rectangle name="Fig2.1"
      x="32"
      y="600"
      width="429"
      height="24"
      fill="1"
      fillcolor="-1"
      stroke="1"
      strokecolor="-16777216"
    />
    <text name="Fig2.2"
      context=""
      x="33"
      y="601"
      fill="0"
      fillcolor="-1"
      stroke="0"
      strokecolor="-16777216"
      font="dialog"
      textsize="9"
    >&lt;&lt;Interface&gt;&gt;</text>
    <text name="Fig2.3"
      context=""
      x="33"
      y="611"
      fill="0"
      fillcolor="-1"
      stroke="0"
      strokecolor="-16777216"
      font="dialog"
      textsize="9"
    >ElementProcessor</text>
    <text name="Fig2.4"
      context=""
      x="32"
      y="623"
      fill="1"
      fillcolor="-1"
      stroke="1"
      strokecolor="-16777216"
      font="dialog"
      textsize="9"
    >+initialize(in attributes[]:Attribute, in parent:ElementProcessor, in filesystem:Filesystem)
+acceptCharacters(in data[]:char)
+acceptWhitespaceCharacters(in data[]:char)
+endProcessing()</text>
  </group>
  <group name="Fig3"
       description="org.argouml.uml.diagram.static_structure.ui.FigClass[112, 368, 376, 105]"
       href="127-0-0-1-2264da:e957cbdec1:-7fde"
       shown="7"
       fill="1"
       fillcolor="-1"
       stroke="1"
       strokecolor="-16777216"
  >
    <private>
    </private>
    <rectangle name="Fig3.0"
      x="112"
      y="368"
      width="376"
      height="104"
      fill="1"
      fillcolor="-1"
      stroke="1"
      strokecolor="-16777216"
    />
    <text name="Fig3.1"
      context=""
      x="10"
      y="-30"
      fill="1"
      fillcolor="-1"
      stroke="1"
      strokecolor="-16777216"
      font="dialog"
      textsize="9"
    ></text>
    <text name="Fig3.2"
      context=""
      x="112"
      y="368"
      fill="1"
      fillcolor="-1"
      stroke="1"
      strokecolor="-16777216"
      font="dialog.italic"
      textsize="9"
    >ElementProcessorFactory</text>
    <rectangle name="Fig3.3"
      x="10"
      y="-25"
      width="2"
      height="60"
      fill="1"
      fillcolor="-1"
      stroke="1"
      strokecolor="-1"
    />
    <text name="Fig3.4"
      context=""
      x="112"
      y="388"
      fill="1"
      fillcolor="-1"
      stroke="1"
      strokecolor="-16777216"
      font="dialog"
      textsize="9"
    >-_element_processor_map : Map</text>
    <text name="Fig3.5"
      context=""
      x="112"
      y="408"
      fill="1"
      fillcolor="-1"
      stroke="1"
      strokecolor="-16777216"
      font="dialog"
      textsize="9"
    >+createElementProcessor(in name:String) : ElementProcessor
#addElementProcessorProgenitor(in name:String, in progenitor:Object)
#lookupElementProcessorProgenitor(in name:String) : Object
#doCreateElementProcessor(in progenitor:Object) : ElementProcessor
#constructElementProcessor(in progenitor:Constructor) : ElementProcessor
#createNewElementProcessorInstance(in progenitor:Class) : ElementProcessor</text>
  </group>
  <group name="Fig4"
       description="org.argouml.uml.diagram.static_structure.ui.FigClass[32, 528, 293, 61]"
       href="127-0-0-1-2264da:e95e6c79c6:-7ffb"
       shown="7"
       fill="1"
       fillcolor="-1"
       stroke="1"
       strokecolor="-16777216"
  >
    <private>
    </private>
    <rectangle name="Fig4.0"
      x="32"
      y="528"
      width="293"
      height="60"
      fill="1"
      fillcolor="-1"
      stroke="1"
      strokecolor="-16777216"
    />
    <text name="Fig4.1"
      context=""
      x="10"
      y="10"
      fill="1"
      fillcolor="-1"
      stroke="1"
      strokecolor="-16777216"
      font="dialog"
      textsize="9"
    ></text>
    <text name="Fig4.2"
      context=""
      x="32"
      y="528"
      fill="1"
      fillcolor="-1"
      stroke="1"
      strokecolor="-16777216"
      font="dialog"
      textsize="9"
    >HSSFSerializer</text>
    <rectangle name="Fig4.3"
      x="10"
      y="15"
      width="2"
      height="60"
      fill="1"
      fillcolor="-1"
      stroke="1"
      strokecolor="-1"
    />
    <text name="Fig4.4"
      context=""
      x="32"
      y="548"
      fill="1"
      fillcolor="-1"
      stroke="1"
      strokecolor="-16777216"
      font="dialog"
      textsize="9"
    >-_element_processor_factory : HSSFElementProcessorFactory</text>
    <text name="Fig4.5"
      context=""
      x="32"
      y="568"
      fill="1"
      fillcolor="-1"
      stroke="1"
      strokecolor="-16777216"
      font="dialog"
      textsize="9"
    >+getMimeType() : String</text>
  </group>
  <group name="Fig5"
       description="org.argouml.uml.diagram.static_structure.ui.FigClass[344, 552, 143, 20]"
       href="127-0-0-1-32fb1e:e95f731f0f:-7ff7"
       shown="1"
       fill="1"
       fillcolor="-1"
       stroke="1"
       strokecolor="-16777216"
  >
    <private>
    </private>
    <rectangle name="Fig5.0"
      x="344"
      y="552"
      width="143"
      height="20"
      fill="1"
      fillcolor="-1"
      stroke="1"
      strokecolor="-16777216"
    />
    <text name="Fig5.1"
      context=""
      x="10"
      y="10"
      fill="1"
      fillcolor="-1"
      stroke="1"
      strokecolor="-16777216"
      font="dialog"
      textsize="9"
    ></text>
    <text name="Fig5.2"
      context=""
      x="344"
      y="552"
      fill="1"
      fillcolor="-1"
      stroke="1"
      strokecolor="-16777216"
      font="dialog"
      textsize="9"
    >HSSFElementProcessorFactory</text>
    <rectangle name="Fig5.3"
      x="10"
      y="15"
      width="2"
      height="60"
      fill="1"
      fillcolor="-1"
      stroke="1"
      strokecolor="-1"
    />
    <text name="Fig5.4"
      context=""
      x="344"
      y="572"
      fill="1"
      fillcolor="-1"
      stroke="1"
      strokecolor="-16777216"
      font="dialog"
      textsize="9"
    ></text>
    <text name="Fig5.5"
      context=""
      x="344"
      y="572"
      fill="1"
      fillcolor="-1"
      stroke="1"
      strokecolor="-16777216"
      font="dialog"
      textsize="9"
    ></text>
  </group>
  <group name="Fig9"
       description="org.argouml.uml.diagram.static_structure.ui.FigClass[88, 488, 322, 20]"
       href="127-0-0-1-5780d9:e9ab5b05d8:-7fee"
       shown="1"
       fill="1"
       fillcolor="-1"
       stroke="1"
       strokecolor="-16777216"
  >
    <private>
    </private>
    <rectangle name="Fig9.0"
      x="88"
      y="488"
      width="322"
      height="20"
      fill="1"
      fillcolor="-16711681"
      stroke="1"
      strokecolor="-16711681"
    />
    <text name="Fig9.1"
      context=""
      x="88"
      y="488"
      fill="1"
      fillcolor="-1"
      stroke="1"
      strokecolor="-16777216"
      font="dialog"
      textsize="9"
    ></text>
    <text name="Fig9.2"
      context=""
      x="88"
      y="488"
      fill="1"
      fillcolor="-1"
      stroke="1"
      strokecolor="-16777216"
      font="dialog"
      textsize="9"
    >ElementProcessorFactory.CannotCreateElementProcessorException</text>
    <rectangle name="Fig9.3"
      x="88"
      y="493"
      width="2"
      height="60"
      fill="1"
      fillcolor="-1"
      stroke="1"
      strokecolor="-1"
    />
    <text name="Fig9.4"
      context=""
      x="88"
      y="508"
      fill="1"
      fillcolor="-1"
      stroke="1"
      strokecolor="-16777216"
      font="dialog"
      textsize="9"
    ></text>
    <text name="Fig9.5"
      context=""
      x="88"
      y="508"
      fill="1"
      fillcolor="-1"
      stroke="1"
      strokecolor="-16777216"
      font="dialog"
      textsize="9"
    ></text>
  </group>
  <group name="Fig6"
       description="org.argouml.uml.diagram.ui.FigGeneralization"
       href="127-0-0-1-2264da:e95e6c79c6:-7ff9"
       stroke="1"
       strokecolor="-16777216"
  >
    <private>
      sourcePortFig="Fig4.0"
      destPortFig="Fig0.0"
      sourceFigNode="Fig4"
      destFigNode="Fig0"
    </private>
    <path name="Fig6.1"
      description="org.tigris.gef.presentation.FigPoly"
      fill="0"
      fillcolor="-1"
      stroke="1"
      strokecolor="-16777216"
    >
      <moveto x="56"
              y="528" />
      <lineto x="56"
              y="352" />
    </path>
    <annotations>
    </annotations>
  </group>
  <group name="Fig7"
       description="org.argouml.uml.diagram.ui.FigGeneralization"
       href="127-0-0-1-32fb1e:e95f731f0f:-7ff6"
       stroke="1"
       strokecolor="-16777216"
  >
    <private>
      sourcePortFig="Fig5.0"
      destPortFig="Fig3.0"
      sourceFigNode="Fig5"
      destFigNode="Fig3"
    </private>
    <path name="Fig7.1"
      description="org.tigris.gef.presentation.FigPoly"
      fill="0"
      fillcolor="-1"
      stroke="1"
      strokecolor="-16777216"
    >
      <moveto x="447"
              y="552" />
      <lineto x="447"
              y="472" />
    </path>
    <annotations>
    </annotations>
  </group>
  <group name="Fig8"
       description="org.argouml.uml.diagram.ui.FigAssociation"
       href="127-0-0-1-32fb1e:e95f731f0f:-7ff5"
       stroke="1"
       strokecolor="-16777216"
  >
    <private>
      sourcePortFig="Fig4.0"
      destPortFig="Fig5.0"
      sourceFigNode="Fig4"
      destFigNode="Fig5"
    </private>
    <path name="Fig8.1"
      description="org.tigris.gef.presentation.FigPoly"
      fill="0"
      fillcolor="-1"
      stroke="1"
      strokecolor="-16777216"
    >
      <moveto x="325"
              y="560" />
      <lineto x="344"
              y="560" />
    </path>
    <annotations>
    </annotations>
  </group>
</pgml>