[ It is plain, therefore,
that Iris was commonly accepted as the messenger of the gods, though our
authoress will never permit her to fetch or carry for any one.]
149 (return)
[ i.e. the doorway
leading from the inner to the outer court.]
150 (return)
[See note 156]
151 (return)
[ These, I imagine, must
have been in the open part of the inner courtyard, where the maids also
stood, and threw the light of their torches into the covered cloister that
ran all round it. The smoke would otherwise have been intolerable.]
152 (return)
[ Translation very
uncertain; vide Liddell and Scott, under {Greek}]
153 (return)
[ See photo on opposite
page.]
154 (return)
[ cf. "Il." ii. 184, and
217, 218. An additional and well-marked feature being wanted to convince
Penelope, the writer has taken the hunched shoulders of Thersites (who is
mentioned immediately after Eurybates in the "Iliad") and put them on to
Eurybates' back.]
155 (return)
[ This is how geese are
now fed in Sicily, at any rate in summer, when the grass is all burnt up.
I have never seen them grazing.]
156 (return)
[ Lower down (line 143)
Euryclea says it was herself that had thrown the cloak over Ulysses—for
the plural should not be taken as implying more than one person. The
writer is evidently still fluctuating between Euryclea and Eurynome as the
name for the old nurse. She probably originally meant to call her
Euryclea, but finding it not immediately easy to make Euryclea scan in
xvii. 495, she hastily called her Eurynome, intending either to alter this
name later or to change the earlier Euryclea's into Eurynome. She then
drifted in to Eurynome as convenience further directed, still nevertheless
hankering after Euryclea, till at last she found that the path of least
resistance would lie in the direction of making Eurynome and Euryclea two
persons. Therefore in xxiii. 289-292 both Eurynome and "the nurse" (who
can be none other than Euryclea) come on together. I do not say that this
is feminine, but it is not unfeminine.]
157 (return)
[ See note [156] : ]
158 (return)
[ This, I take it, was
immediately in front of the main entrance of the inner courtyard into the
body of the house.]
159 (return)
[ This is the only
allusion to Sardinia in either "Iliad" or "Odyssey."]
160 (return)
[ The normal translation
of the Greek word would be "holding back," "curbing," "restraining," but I
cannot think that the writer meant this—she must have been using the
word in its other sense of "having," "holding," "keeping," "maintaining."]
161 (return)
[ I have vainly tried to
realise the construction of the fastening here described.]
162 (return)
[ See plan of Ulysses'
house in the appendix. It is evident that the open part of the court had
no flooring but the natural soil.]
163 (return)
[ See plan of Ulysses'
house, and note [175].]
164 (return)
[ i.e. the door that led
into the body of the house.]
165 (return)
[ This was, no doubt, the
little table that was set for Ulysses, "Od." xx. 259.
Surely the difficulty of this passage has been overrated. I suppose the iron part of the axe to have been wedged into the handle, or bound securely to it—the handle being half buried in the ground. The axe would be placed edgeways towards the archer, and he would have to shoot his arrow through the hole into which the handle was fitted when the axe was in use. Twelve axes were placed in a row all at the same height, all exactly in front of one another, all edgeways to Ulysses whose arrow passed through all the holes from the first onward. I cannot see how the Greek can bear any other interpretation, the words being, {Greek}
"He did not miss a single hole from the first onwards." {Greek} according to Liddell and Scott being "the hole for the handle of an axe, etc.," while {Greek} ("Od." v. 236) is, according to the same authorities, the handle itself. The feat is absurdly impossible, but our authoress sometimes has a soul above impossibilities.]
166 (return)
[ The reader will note
how the spoiling of good food distresses the writer even in such a supreme
moment as this.]
167 (return)
[ Here we have it again.
Waste of substance comes first.]
168 (return)
[ cf. "Il." iii. 337 and
three other places. It is strange that the author of the "Iliad" should
find a little horse-hair so alarming. Possibly enough she was merely
borrowing a common form line from some earlier poet—or poetess—for
this is a woman's line rather than a man's.]
169 (return)
[ Or perhaps simply
"window." See plan in the appendix.]
170 (return)
[ i.e. the pavement on
which Ulysses was standing.]
171 (return)
[ The interpretation of
lines 126-143 is most dubious, and at best we are in a region of
melodrama: cf., however, i.425, etc. from which it appears that there was
a tower in the outer court, and that Telemachus used to sleep in it. The
{Greek} I take to be a door, or trap door, leading on to the roof above
Telemachus's bed room, which we are told was in a place that could be seen
from all round—or it might be simply a window in Telemachus's room
looking out into the street. From the top of the tower the outer world was
to be told what was going on, but people could not get in by the {Greek}:
they would have to come in by the main entrance, and Melanthius explains
that the mouth of the narrow passage (which was in the lands of Ulysses
and his friends) commanded the only entrance by which help could come, so
that there would be nothing gained by raising an alarm. As for the {Greek}
of line 143, no commentator ancient or modern has been able to say what
was intended—but whatever they were, Melanthius could never carry
twelve shields, twelve helmets, and twelve spears. Moreover, where he
could go the others could go also. If a dozen suitors had followed
Melanthius into the house they could have attacked Ulysses in the rear, in
which case, unless Minerva had intervened promptly, the "Odyssey" would
have had a different ending. But throughout the scene we are in a region
of extravagance rather than of true fiction—it cannot be taken
seriously by any but the very serious, until we come to the episode of
Phemius and Medon, where the writer begins to be at home again.]
172 (return)
[ I presume it was
intended that there should be a hook driven into the bearing-post.]
173 (return)
[ What for?]
174 (return)
[ Gr: {Greek}. This is
not {Greek}.]
175 (return)
[ From lines 333 and 341
of this book, and lines 145 and 146 of bk. xxi we can locate the approach
to the {Greek} with some certainty.]
176 (return)
[ But in xix. 500-502
Ulysses scolded Euryclea for offering information on this very point, and
declared himself quite able to settle it for himself.]
177 (return)
[ There were a hundred
and eight Suitors.]
178 (return)
[ Lord Grimthorpe, whose
understanding does not lend itself to easy imposition, has been good
enough to write to me about my conviction that the "Odyssey" was written
by a woman, and to send me remarks upon the gross absurdity of the
incident here recorded. It is plain that all the authoress cared about was
that the women should be hanged: as for attempting to realise, or to make
her readers realise, how the hanging was done, this was of no consequence.
The reader must take her word for it and ask no questions. Lord Grimthorpe
wrote:
"I had better send you my ideas about Nausicaa's hanging of the maids (not 'maidens,' of whom Froude wrote so well in his 'Science of History') before I forget it all. Luckily for me Liddell & Scott have specially translated most of the doubtful words, referring to this very place.
"A ship's cable. I don't know how big a ship she meant, but it must have been a very small one indeed if its 'cable' could be used to tie tightly round a woman's neck, and still more round a dozen of them 'in a row,' besides being strong enough to hold them and pull them all up.
"A dozen average women would need the weight and strength of more than a dozen strong heavy men even over the best pulley hung to the roof over them; and the idea of pulling them up by a rope hung anyhow round a pillar {Greek} is absurdly impossible; and how a dozen of them could be hung dangling round one post is a problem which a senior wrangler would be puzzled to answer... She had better have let Telemachus use his sword as he had intended till she changed his mind for him."]
179 (return)
[ Then they had all been
in Ulysses' service over twenty years; perhaps the twelve guilty ones had
been engaged more recently.]
180 (return)
[ Translation very
doubtful—cf. "It." xxiv. 598.]
181 (return)
[ But why could she not
at once ask to see the scar, of which Euryclea had told her, or why could
not Ulysses have shown it to her?]
182 (return)
[ The people of Ithaca
seem to have been as fond of carping as the Phaeacians were in vi. 273,
etc.]
183 (return)
[ See note [156].
Ulysses's bed room does not appear to have been upstairs, nor yet quite
within the house. Is it possible that it was "the domed room" round the
outside of which the erring maids were, for aught we have heard to the
contrary, still hanging?]
184 (return)
[ Ulysses bedroom in the
mind of the writer is here too apparently down stairs.]
185 (return)
[ Penelope having been
now sufficiently whitewashed, disappears from the poem.]
186 (return)
[ So practised a
washerwoman as our authoress doubtless knew that by this time the web must
have become such a wreck that it would have gone to pieces in the wash.]
A lady points out to me, just as these sheets are leaving my hands, that no really good needlewoman—no one, indeed, whose work or character was worth consideration—could have endured, no matter for what reason, the unpicking of her day's work, day after day for between three and four years.]
187 (return)
[ We must suppose Dolius
not yet to know that his son Melanthius had been tortured, mutilated, and
left to die by Ulysses' orders on the preceding day, and that his daughter
Melantho had been hanged. Dolius was probably exceptionally simple-minded,
and his name was ironical. So on Mt. Eryx I was shown a man who was always
called Sonza Malizia or "Guileless"—he being held exceptionally
cunning.]
End of the Project Gutenberg EBook of The Odyssey, by Homer *** END OF THIS PROJECT GUTENBERG EBOOK THE ODYSSEY *** ***** This file should be named 1727-h.htm or 1727-h.zip ***** This and all associated files of various formats will be found in: http://www.gutenberg.org/1/7/2/1727/ Produced by Jim Tinsley HTML file produced by David Widger Updated editions will replace the previous one--the old editions will be renamed. Creating the works from public domain print editions means that no one owns a United States copyright in these works, so the Foundation (and you!) can copy and distribute it in the United States without permission and without paying copyright royalties. Special rules, set forth in the General Terms of Use part of this license, apply to copying and distributing Project Gutenberg-tm electronic works to protect the PROJECT GUTENBERG-tm concept and trademark. Project Gutenberg is a registered trademark, and may not be used if you charge for the eBooks, unless you receive specific permission. If you do not charge anything for copies of this eBook, complying with the rules is very easy. You may use this eBook for nearly any purpose such as creation of derivative works, reports, performances and research. They may be modified and printed and given away--you may do practically ANYTHING with public domain eBooks. Redistribution is subject to the trademark license, especially commercial redistribution. *** START: FULL LICENSE *** THE FULL PROJECT GUTENBERG LICENSE PLEASE READ THIS BEFORE YOU DISTRIBUTE OR USE THIS WORK To protect the Project Gutenberg-tm mission of promoting the free distribution of electronic works, by using or distributing this work (or any other work associated in any way with the phrase "Project Gutenberg"), you agree to comply with all the terms of the Full Project Gutenberg-tm License available with this file or online at www.gutenberg.org/license. Section 1. General Terms of Use and Redistributing Project Gutenberg-tm electronic works 1.A. By reading or using any part of this Project Gutenberg-tm electronic work, you indicate that you have read, understand, agree to and accept all the terms of this license and intellectual property (trademark/copyright) agreement. If you do not agree to abide by all the terms of this agreement, you must cease using and return or destroy all copies of Project Gutenberg-tm electronic works in your possession. If you paid a fee for obtaining a copy of or access to a Project Gutenberg-tm electronic work and you do not agree to be bound by the terms of this agreement, you may obtain a refund from the person or entity to whom you paid the fee as set forth in paragraph 1.E.8. 1.B. "Project Gutenberg" is a registered trademark. It may only be used on or associated in any way with an electronic work by people who agree to be bound by the terms of this agreement. There are a few things that you can do with most Project Gutenberg-tm electronic works even without complying with the full terms of this agreement. See paragraph 1.C below. There are a lot of things you can do with Project Gutenberg-tm electronic works if you follow the terms of this agreement and help preserve free future access to Project Gutenberg-tm electronic works. See paragraph 1.E below. 1.C. The Project Gutenberg Literary Archive Foundation ("the Foundation" or PGLAF), owns a compilation copyright in the collection of Project Gutenberg-tm electronic works. Nearly all the individual works in the collection are in the public domain in the United States. If an individual work is in the public domain in the United States and you are located in the United States, we do not claim a right to prevent you from copying, distributing, performing, displaying or creating derivative works based on the work as long as all references to Project Gutenberg are removed. Of course, we hope that you will support the Project Gutenberg-tm mission of promoting free access to electronic works by freely sharing Project Gutenberg-tm works in compliance with the terms of this agreement for keeping the Project Gutenberg-tm name associated with the work. You can easily comply with the terms of this agreement by keeping this work in the same format with its attached full Project Gutenberg-tm License when you share it without charge with others. 1.D. The copyright laws of the place where you are located also govern what you can do with this work. Copyright laws in most countries are in a constant state of change. If you are outside the United States, check the laws of your country in addition to the terms of this agreement before downloading, copying, displaying, performing, distributing or creating derivative works based on this work or any other Project Gutenberg-tm work. The Foundation makes no representations concerning the copyright status of any work in any country outside the United States. 1.E. Unless you have removed all references to Project Gutenberg: 1.E.1. The following sentence, with active links to, or other immediate access to, the full Project Gutenberg-tm License must appear prominently whenever any copy of a Project Gutenberg-tm work (any work on which the phrase "Project Gutenberg" appears, or with which the phrase "Project Gutenberg" is associated) is accessed, displayed, performed, viewed, copied or distributed: This eBook is for the use of anyone anywhere at no cost and with almost no restrictions whatsoever. You may copy it, give it away or re-use it under the terms of the Project Gutenberg License included with this eBook or online at www.gutenberg.org 1.E.2. If an individual Project Gutenberg-tm electronic work is derived from the public domain (does not contain a notice indicating that it is posted with permission of the copyright holder), the work can be copied and distributed to anyone in the United States without paying any fees or charges. If you are redistributing or providing access to a work with the phrase "Project Gutenberg" associated with or appearing on the work, you must comply either with the requirements of paragraphs 1.E.1 through 1.E.7 or obtain permission for the use of the work and the Project Gutenberg-tm trademark as set forth in paragraphs 1.E.8 or 1.E.9. 1.E.3. If an individual Project Gutenberg-tm electronic work is posted with the permission of the copyright holder, your use and distribution must comply with both paragraphs 1.E.1 through 1.E.7 and any additional terms imposed by the copyright holder. Additional terms will be linked to the Project Gutenberg-tm License for all works posted with the permission of the copyright holder found at the beginning of this work. 1.E.4. Do not unlink or detach or remove the full Project Gutenberg-tm License terms from this work, or any files containing a part of this work or any other work associated with Project Gutenberg-tm. 1.E.5. Do not copy, display, perform, distribute or redistribute this electronic work, or any part of this electronic work, without prominently displaying the sentence set forth in paragraph 1.E.1 with active links or immediate access to the full terms of the Project Gutenberg-tm License. 1.E.6. You may convert to and distribute this work in any binary, compressed, marked up, nonproprietary or proprietary form, including any word processing or hypertext form. However, if you provide access to or distribute copies of a Project Gutenberg-tm work in a format other than "Plain Vanilla ASCII" or other format used in the official version posted on the official Project Gutenberg-tm web site (www.gutenberg.org), you must, at no additional cost, fee or expense to the user, provide a copy, a means of exporting a copy, or a means of obtaining a copy upon request, of the work in its original "Plain Vanilla ASCII" or other form. Any alternate format must include the full Project Gutenberg-tm License as specified in paragraph 1.E.1. 1.E.7. Do not charge a fee for access to, viewing, displaying, performing, copying or distributing any Project Gutenberg-tm works unless you comply with paragraph 1.E.8 or 1.E.9. 1.E.8. You may charge a reasonable fee for copies of or providing access to or distributing Project Gutenberg-tm electronic works provided that - You pay a royalty fee of 20% of the gross profits you derive from the use of Project Gutenberg-tm works calculated using the method you already use to calculate your applicable taxes. The fee is owed to the owner of the Project Gutenberg-tm trademark, but he has agreed to donate royalties under this paragraph to the Project Gutenberg Literary Archive Foundation. Royalty payments must be paid within 60 days following each date on which you prepare (or are legally required to prepare) your periodic tax returns. Royalty payments should be clearly marked as such and sent to the Project Gutenberg Literary Archive Foundation at the address specified in Section 4, "Information about donations to the Project Gutenberg Literary Archive Foundation." - You provide a full refund of any money paid by a user who notifies you in writing (or by e-mail) within 30 days of receipt that s/he does not agree to the terms of the full Project Gutenberg-tm License. You must require such a user to return or destroy all copies of the works possessed in a physical medium and discontinue all use of and all access to other copies of Project Gutenberg-tm works. - You provide, in accordance with paragraph 1.F.3, a full refund of any money paid for a work or a replacement copy, if a defect in the electronic work is discovered and reported to you within 90 days of receipt of the work. - You comply with all other terms of this agreement for free distribution of Project Gutenberg-tm works. 1.E.9. If you wish to charge a fee or distribute a Project Gutenberg-tm electronic work or group of works on different terms than are set forth in this agreement, you must obtain permission in writing from both the Project Gutenberg Literary Archive Foundation and Michael Hart, the owner of the Project Gutenberg-tm trademark. Contact the Foundation as set forth in Section 3 below. 1.F. 1.F.1. Project Gutenberg volunteers and employees expend considerable effort to identify, do copyright research on, transcribe and proofread public domain works in creating the Project Gutenberg-tm collection. Despite these efforts, Project Gutenberg-tm electronic works, and the medium on which they may be stored, may contain "Defects," such as, but not limited to, incomplete, inaccurate or corrupt data, transcription errors, a copyright or other intellectual property infringement, a defective or damaged disk or other medium, a computer virus, or computer codes that damage or cannot be read by your equipment. 1.F.2. LIMITED WARRANTY, DISCLAIMER OF DAMAGES - Except for the "Right of Replacement or Refund" described in paragraph 1.F.3, the Project Gutenberg Literary Archive Foundation, the owner of the Project Gutenberg-tm trademark, and any other party distributing a Project Gutenberg-tm electronic work under this agreement, disclaim all liability to you for damages, costs and expenses, including legal fees.   LIMITED RIGHT OF REPLACEMENT OR REFUND - If you discover a defect in this electronic work within 90 days of receiving it, you can receive a refund of the money (if any) you paid for it by sending a written explanation to the person you received the work from. If you received the work on a physical medium, you must return the medium with your written explanation. The person or entity that provided you with the defective work may elect to provide a replacement copy in lieu of a refund. If you received the work electronically, the person or entity providing it to you may choose to give you a second opportunity to receive the work electronically in lieu of a refund. If the second copy is also defective, you may demand a refund in writing without further opportunities to fix the problem. 1.F.4. Except for the limited right of replacement or refund set forth in paragraph 1.F.3, this work is provided to you 'AS-IS', WITH NO OTHER WARRANTIES OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY PURPOSE. 1.F.5. Some states do not allow disclaimers of certain implied warranties or the exclusion or limitation of certain types of damages. If any disclaimer or limitation set forth in this agreement violates the law of the state applicable to this agreement, the agreement shall be interpreted to make the maximum disclaimer or limitation permitted by the applicable state law. The invalidity or unenforceability of any provision of this agreement shall not void the remaining provisions. 1.F.6. INDEMNITY - You agree to indemnify and hold the Foundation, the trademark owner, any agent or employee of the Foundation, anyone providing copies of Project Gutenberg-tm electronic works in accordance with this agreement, and any volunteers associated with the production, promotion and distribution of Project Gutenberg-tm electronic works, harmless from all liability, costs and expenses, including legal fees, that arise directly or indirectly from any of the following which you do or cause to occur: (a) distribution of this or any Project Gutenberg-tm work, (b) alteration, modification, or additions or deletions to any Project Gutenberg-tm work, and (c) any Defect you cause. Section 2. Information about the Mission of Project Gutenberg-tm Project Gutenberg-tm is synonymous with the free distribution of electronic works in formats readable by the widest variety of computers including obsolete, old, middle-aged and new computers. It exists because of the efforts of hundreds of volunteers and donations from people in all walks of life. Volunteers and financial support to provide volunteers with the assistance they need are critical to reaching Project Gutenberg-tm's goals and ensuring that the Project Gutenberg-tm collection will remain freely available for generations to come. In 2001, the Project Gutenberg Literary Archive Foundation was created to provide a secure and permanent future for Project Gutenberg-tm and future generations. To learn more about the Project Gutenberg Literary Archive Foundation and how your efforts and donations can help, see Sections 3 and 4 and the Foundation information page at www.gutenberg.org Section 3. Information about the Project Gutenberg Literary Archive Foundation The Project Gutenberg Literary Archive Foundation is a non profit 501(c)(3) educational corporation organized under the laws of the state of Mississippi and granted tax exempt status by the Internal Revenue Service. The Foundation's EIN or federal tax identification number is 64-6221541. Contributions to the Project Gutenberg Literary Archive Foundation are tax deductible to the full extent permitted by U.S. federal laws and your state's laws. The Foundation's principal office is located at 4557 Melan Dr. S. Fairbanks, AK, 99712., but its volunteers and employees are scattered throughout numerous locations. Its business office is located at 809 North 1500 West, Salt Lake City, UT 84116,<PHONE_NUMBER>. Email contact links and up to date contact information can be found at the Foundation's web site and official page at www.gutenberg.org/contact For additional contact information: Dr. Gregory B. Newby Chief Executive and Director<EMAIL_ADDRESS>Section 4. Information about Donations to the Project Gutenberg Literary Archive Foundation Project Gutenberg-tm depends upon and cannot survive without wide spread public support and donations to carry out its mission of increasing the number of public domain and licensed works that can be freely distributed in machine readable form accessible by the widest array of equipment including outdated equipment. Many small donations ($1 to $5,000) are particularly important to maintaining tax exempt status with the IRS. The Foundation is committed to complying with the laws regulating charities and charitable donations in all 50 states of the United States. Compliance requirements are not uniform and it takes a considerable effort, much paperwork and many fees to meet and keep up with these requirements. We do not solicit donations in locations where we have not received written confirmation of compliance. To SEND DONATIONS or determine the status of compliance for any particular state visit www.gutenberg.org/donate While we cannot and do not solicit contributions from states where we have not met the solicitation requirements, we know of no prohibition against accepting unsolicited donations from donors in such states who approach us with offers to donate. International donations are gratefully accepted, but we cannot make any statements concerning tax treatment of donations received from outside the United States. U.S. laws alone swamp our small staff. Please check the Project Gutenberg Web pages for current donation methods and addresses. Donations are accepted in a number of other ways including checks, online payments and credit card donations. To donate, please visit: www.gutenberg.org/donate Section 5. General Information About Project Gutenberg-tm electronic works. Professor Michael S. Hart was the originator of the Project Gutenberg-tm concept of a library of electronic works that could be freely shared with anyone. For forty years, he produced and distributed Project Gutenberg-tm eBooks with only a loose network of volunteer support. Project Gutenberg-tm eBooks are often created from several printed editions, all of which are confirmed as Public Domain in the U.S. unless a copyright notice is included. Thus, we do not necessarily keep eBooks in compliance with any particular paper edition. Most people start at our Web site which has the main PG search facility: www.gutenberg.org This Web site includes information about Project Gutenberg-tm, including how to make donations to the Project Gutenberg Literary Archive Foundation, how to help produce our new eBooks, and how to subscribe to our email newsletter to hear about new eBooks.


| 1 | /* | |
| 2 | * Licensed to the Apache Software Foundation (ASF) under one or more | |
| 3 | * contributor license agreements. See the NOTICE file distributed with | |
| 4 | * this work for additional information regarding copyright ownership. | |
| 5 | * The ASF licenses this file to You under the Apache License, Version 2.0 | |
| 6 | * (the "License"); you may not use this file except in compliance with | |
| 7 | * the License. You may obtain a copy of the License at | |
| 8 | * | |
| 9 | * http://www.apache.org/licenses/LICENSE-2.0 | |
| 10 | * | |
| 11 | * Unless required by applicable law or agreed to in writing, software | |
| 12 | * distributed under the License is distributed on an "AS IS" BASIS, | |
| 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
| 14 | * See the License for the specific language governing permissions and | |
| 15 | * limitations under the License. | |
| 16 | */ | |
| 17 | package org.apache.commons.imaging.formats.bmp.pixelparsers; | |
| 18 | ||
| 19 | import java.io.IOException; | |
| 20 | ||
| 21 | import org.apache.commons.imaging.ImageReadException; | |
| 22 | import org.apache.commons.imaging.common.ImageBuilder; | |
| 23 | import org.apache.commons.imaging.formats.bmp.BmpHeaderInfo; | |
| 24 | ||
| 25 | public abstract class PixelParserSimple extends PixelParser { | |
| 26 | public PixelParserSimple(final BmpHeaderInfo bhi, final byte ColorTable[], | |
| 27 | final byte ImageData[]) { | |
| 28 | super(bhi, ColorTable, ImageData); | |
| 29 | } | |
| 30 | ||
| 31 | public abstract int getNextRGB() throws ImageReadException, IOException; | |
| 32 | ||
| 33 | public abstract void newline() throws ImageReadException, IOException; | |
| 34 | ||
| 35 | @Override | |
| 36 | public void processImage(final ImageBuilder imageBuilder) | |
| 37 | throws ImageReadException, IOException { | |
| 38 | // DataBuffer db = bi.getRaster().getDataBuffer(); | |
| 39 | ||
| 40 |
4
1. processImage : changed conditional boundary → SURVIVED 2. processImage : negated conditional → SURVIVED 3. processImage : Changed increment from -1 to 1 → KILLED 4. processImage : Replaced integer subtraction with addition → KILLED |
for (int y = bhi.height - 1; y >= 0; y--) { |
| 41 |
3
1. processImage : negated conditional → SURVIVED 2. processImage : changed conditional boundary → KILLED 3. processImage : Changed increment from 1 to -1 → KILLED |
for (int x = 0; x < bhi.width; x++) { |
| 42 | final int rgb = getNextRGB(); | |
| 43 | ||
| 44 |
1
1. processImage : removed call to org/apache/commons/imaging/common/ImageBuilder::setRGB → SURVIVED |
imageBuilder.setRGB(x, y, rgb); |
| 45 | // db.setElem(y * bhi.width + x, rgb); | |
| 46 | } | |
| 47 |
1
1. processImage : removed call to org/apache/commons/imaging/formats/bmp/pixelparsers/PixelParserSimple::newline → SURVIVED |
newline(); |
| 48 | } | |
| 49 | } | |
| 50 | } | |
Mutations | ||
| 40 |
1.1 2.2 3.3 4.4 |
|
| 41 |
1.1 2.2 3.3 |
|
| 44 |
1.1 |
|
| 47 |
1.1 |


Latitude
Plots
Plot1:Max Temperature
Plot2:CLoudiness
Plot3:Humidity
Plot4:Wind Speed
Comparisions
Data
Comparision: Latitude vs X
Click any plot to get an indepth Analysis
vs. Max Temperature
vs. Cloudiness
vs. Humidity
vs. Windspeed


{% extends "base.html" %} {% block page_title %}{{ _('Page not found | ') }}{% endblock %} {% block page_id %}not_found%{% endblock %} {% block section_class %}error{% endblock %} {% block content %}
The page that you're looking for may have been moved or deleted. Make sure to check your spelling.


«
»
Path Topology
Active Page
All
Path Statistics
Settings
General
Show filtered paths
Show all sets
Coloring
Enabled
Disabled
Auto
Node width
List view
Paths per page
Align columns
Attribute orientation
Horizontal
Vertical
Show sets
Show attributes
Show datasets
Topology view
Layout
Layered
Force-based
×
Rank paths by
Length
Set connection strength
Set type
Method
Average
Minimum
Maximum
Node property
Property
Method
Average
Minimum
Maximum
Data-based score
Dataset
Property
Method
Average
Minimum
Maximum
Group
Statistic
Median
Arithmetic mean
Standard-deviation
Minimum
Maximum
Scope
Whole Path
Node with min score
Node with max score
Similarity to reference path
Available scores
Number of shared nodes with respect to path length
Number of shared sets in non-shared nodes
Custom score
Available scores
Use score difference to reference path
×
Define Path Score
Title
Custom path score function


Warehouse Chief Baxt:
You don't have enough medals. Did you drop them somewhere?
Please bring the appropriate number of medals when you return.


|
|||||||||||
| PREV PACKAGE NEXT PACKAGE | FRAMES NO FRAMES |
See:
Description
| Interface Summary | |
| SelectQueryTranslator | Interface that defines common API for SELECT translators. |
| Class Summary | |
| BatchQueryBuilder | Superclass of batch query translators. |
| DataObjectMatchTranslator | |
| DeleteBatchQueryBuilder | Translator for delete BatchQueries. |
| DeleteTranslator | Class implements default translation mechanism of org.objectstyle.cayenne.query.DeleteQuery objects to SQL DELETE statements. |
| InsertBatchQueryBuilder | Translator of InsertBatchQueries. |
| InsertTranslator | Class implements default translation mechanism of org.objectstyle.cayenne.query.InsertQuery objects to SQL INSERT statements. |
| LOBBatchQueryBuilder | Superclass of query builders for the DML operations involving LOBs. |
| LOBBatchQueryWrapper | Helper class to extract the information from BatchQueries, essential for LOB columns processing. |
| LOBInsertBatchQueryBuilder | |
| LOBUpdateBatchQueryBuilder | |
| OrderingTranslator | Translates query ordering to SQL. |
| ProcedureTranslator | Stored procedure query translator. |
| QualifierTranslator | Translates query qualifier to SQL. |
| QueryAssembler | Abstract superclass of Query translators. |
| QueryAssemblerHelper | Translates parts of the query to SQL. |
| SelectTranslator | Class that serves as a translator of SELECT queries to JDBC statements. |
| SqlModifyTranslator | Deprecated. Since 1.1. |
| SqlSelectTranslator | Deprecated. Since 1.1. |
| TrimmingQualifierTranslator | QualifierTranslator that allows translation of qualifiers that perform comparison with CHAR columns. |
| UpdateBatchQueryBuilder | A translator for UpdateBatchQueries that produces parameterized SQL. |
| UpdateTranslator | Class implements default translation mechanism of org.objectstyle.cayenne.query.UpdateQuery objects to SQL UPDATE statements. |
Provides translators for Cayenne queries. Classes in this package define interfaces for query translation into SQL as well as provide a default implementation of translators. DbAdapters can define their own translators to handle database-specific issues.
|
|||||||||||
| PREV PACKAGE NEXT PACKAGE | FRAMES NO FRAMES |


Match Play. Red trails 4-5 to 7. How should Red play 42?
pips Red=120 White=29
(CorrectAnswer= 0/0, ErrorScore= 0)
Red needs to pick up White’s blot on his ace-point. That supersedes any other priority in this position. Losing the game loses the match and gammons are irrelevant.
Bar/21, 5/3* is mandatory. Any other move is a blunder or worse.
Bar/21, 5/3* is mandatory. Any other move is a blunder or worse.
1. Cubeful 2-ply bar/21 5/3* Eq.: -0.482 0.259 0.000 0.000 - 0.741 0.394 0.090 2. Cubeful 2-ply bar/19 Eq.: -0.553 (-0.071) 0.223 0.000 0.000 - 0.777 0.384 0.057 3. Cubeful 2-ply bar/21 10/8 Eq.: -0.583 (-0.101) 0.208 0.000 0.000 - 0.792 0.418 0.063 4. Cubeful 2-ply bar/21 22/20 Eq.: -0.591 (-0.109) 0.205 0.000 0.000 - 0.795 0.408 0.045 5. Cubeful 0-ply bar/21 4/2 Eq.: -0.731 (-0.249) 0.134 0.000 0.000 - 0.866 0.401 0.053


Government expected to sign National Broadband Plan contract today
by NewstalkIt's expected the contract for the €3 billion National Broadband Plan contract will be signed today.
The deal is set to get approval from the Cabinet after the EU last week ruled the proposal complies with state aid rules.
The European Commission was investigating whether the Government spend on the plan breached EU state aid rules, which restrict national investment in services offered by private ventures
Cabinet ministers are meeting at the earlier time of 7:30am this morning to sign off on the contract.
It's likely the contracts will then be signed with National Broadband Ireland this morning on the back of the Cabinet approval.
The project aims to roll out broadband to 540,000 homes, farms and businesses - providing high speed internet to around 1.1 million people.
However, the project has not been without controversy.
Delays and setbacks involved a number of firms pulling out of the bidding for the contract.
A number of opposition parties have also demanded that the broadband network should be publicly owned, as the State is investing up to €3 billion in the process.
That's likely to become a lot more difficult after the contracts are signed.
The broadband plan is likely to form a big part of Fine Gael's pitch to voters in the upcoming general election.


The book I read is called Ranger's Apprentice and it is awesome.
Here is some interesting information about it.
This book is great for anyone who likes cliffhangers. The Plot really gets started off when Will is called from his station at the borders of the kingdom to a secret ranger meeting where he is told to travel to the northern most reaches of the kingdom to investigate rumors of a sorcerer!
But will he be able to when he sees a mysterious black night standing in the woods scaring away visitors for an unknown reason, when the son of the lord falls ill, and when his childhood friend is kidnapped by a greedy knight in search of power?
Here are some reasons why you should read it.


2 cells wide
unmerged
unmerged
3 rows, 2 columns
2 cells high
unmerged
unmerged
unmerged
unmerged
unmerged
2 cells wide
unmerged
unmerged
unmerged
unmerged
unmerged


We have about 12 beautiful and comfortable Guest Houses in our yard,
they are fully furnished with all the necessities that we believe you will ever need in your home
In our organisation, our reception is open 24/7, you are expected to book at any time of day
You might as well book online, the link is provided below
These are the details of each Guest House in our yard:
1 Big enough to accommodate a couple
1 While one is using a shower, another can use a tub
1 It can accommodate an SUV


Flex alignment horizontal
Flex start
Dec 28, 2018
sign up
login in
Flex center
Dec 28, 2018
sign up
login in
Flex end
Dec 28, 2018
sign up
login in
Flex space around
Dec 28, 2018
sign up
login in
Flex space between
Dec 28, 2018
sign up
login in
Flex space between
Dec 28, 2018
sign up
login in
Flex alignment vertical
Flex start
Subscribe ▾
Flex center
Subscribe ▾
Flex end
Subscribe ▾
Flex stretch
Subscribe ▾


Versioning
doLittle follows the Semantic Versioning v2 versioning scheme.
Deviation from the standard; due to filesystem limitations, the + for build numbers is a -.
During building between major versions the versioning pattern is as follows:
<major>.<minor>.<patch>.<build>
When approaching end of development for a specific version; alpha version - the pattern is as follows:
<major>.<minor>.<patch>-alpha.<build>
For beta releases, the pattern is as follows.
<major>.<minor>.<patch>-beta.<build>
When a major, minor or patch is released, the pattern is as follows.
<major>.<minor>.<patch>
When a minor version is released, the patch will be 0. When a major version is released, the minor and patch will be 0.
The build number is never reset and is constantly increased.
C# - AssemblyInfo
The C# version type used in AssemblyInfo has 4 numbers and will therefor always follow the following pattern:
<major>.<minor>.<patch>.<build>


Dear @FranchiseName
To finalize your Monthly Summary Report submission please print off the attached Monthly Summary Report and have it notarized by a licensed notary.
Following the notarization of the Monthly Summary Report, please deliver the original notarized document with the required detailed report and payment to
the below referenced address:
City of Miami Finance Department /Collections
444 SW 2nd Avenue 6th Floor
Miami, FL 33130
Please note that our office is able to accept the detailed report as specified in your contract agreement in any of the following format: flash drive, PDF file, Compact disk, or a hard copy of the printed detail report to the City of Miami Solid Waste Department.
Thank you for your attention in this matter.


Money Play. How should Red play 64?
pips Red=147 White=128
(CorrectAnswer= 0/0, ErrorScore= 0)
Behind in the race but with the better board and structure, Red should be seeking contact in this position.
This implies that he should play bar/21/15 rather than safetying either of his outer board blots.
Bar/21, 11/5 is a bad error because it gives White total control of the outer boards while bar/21, 8/2 should not be played by any right-minded player!
This implies that he should play bar/21/15 rather than safetying either of his outer board blots.
Bar/21, 11/5 is a bad error because it gives White total control of the outer boards while bar/21, 8/2 should not be played by any right-minded player!
1. Cubeful 2-ply bar/15 Eq.: -0.253 0.425 0.121 0.003 - 0.575 0.138 0.004 2. Cubeful 2-ply bar/21 11/5 Eq.: -0.291 (-0.038) 0.406 0.111 0.003 - 0.594 0.112 0.002 3. Cubeful 2-ply bar/21 8/2 Eq.: -0.388 (-0.135) 0.383 0.101 0.002 - 0.617 0.126 0.003


Register with the CYD Progressives in time for our caucus meeting at the 2017 California Young Democrats Retreat at Lake Tahoe.
Meet your 2017-2018 Officers elected at the May 2017 California Young Democrats Convention in Sacramento.
Our membership committees are always open to those who want to get involved and make a difference.


The test sample page
This sample page is about a user, therefor we can use the userView
avatar
wrong user
wrong user
right user
wrong user


I used to take Ritalin while in college, as a part of an ADHD management rubric. It was discovered when I was a college freshman that I had moderate inattentiveness and apathy associated with attention deficit-hyperactivity disorder. As a result, my doctor prescribed (3) doses of 20 miligrams Methylphenidate (ritalin) a day. Using the drug incresed my ability to concentrate for prolonged periods of time in the areas of listening, reading, and studying. I usually avoided the use of ritalin during midnight term paper-writing sessions, becasue the drug tends to minimize creative output, turning a writer into a literalist, and a linear blockhead.
However, when taking the drug ritalin, I never enjoyed the side effects. The effects of decreased appetite, and moderate weight loss are mostly manageable, as are the effects of jaw-clenching, and muscle twitches. However, I often found the ritalin-induced insomnia, anxiety, the occasional states of mild to moderate paranoia, as well as auditory-tactile hallucinations troubling (to myself, as well as to my roommates).
I took the drug ritalin more or less inconsistently throughout my college years, mostly because of the anxiety and the insomnia, but also because of the frequent medical checkups required. Ritalin is a controlled substance, and so every three prescripton refills, I would have to have a doctor's checkup to determine whether the drug was still 'working' for me.  Also, I hated these visits, because I have never enjoyed being bare-assed on a paper-covered examination table.
Anyway, to get to the meat of my experience report; I should say that ritalin is good for studying, and fairly decent for partying. I always had a good time with it, but I always found myself with the typical Ritalin-induced insomnia, which didn't matter as much on the weekends. Although I generally took a workmanlike approach to my ritalin use (for work and not play), I did use the drug a few times for partying. I always had plenty of dudes begging me to sell them a few pills for crushing and insufflating, but I usually didn't sell it to anyone, because I have never been one for giving out pharms to others indiscriminantly. I can never be sure of what will happen, and I certainly do not want to be held responsible for the adverse occurring.
When I took ritalin for partying, it was always after having had several drinks (beers or whiskeys were what I drank a lot of). Generally, I would take the drug at 3X my single dosage amount. Twenty milagrams was my perscription dose, hence, I would take 60 miligrams for partying. I took the drug for partying because I am generally a shy, introverted type, but ritalin and other stimulants seem to bring me out of my shell a bit. Plus, the drug allows me to stay up later so I could party longer, and drink more booze cocktails than normal. This was a bonus.
In using Ritalin, I don't get a coke or meth-like rush, but rather, I get a more moderate zap in concentration, and elevation of mood. I am much more talkative and fidgety than usual. If I use ritalin in a party environment, I will be more likely to become animated, adamant, and excited about things going on around me. I have to be careful not to trap others in one-sided conversations, becuase I get the impression when amped on Ritalin that I am the most insightful, clever, and wry conversationalist out there. In reality, although I may feel 'smarter', I may simply just be blabbing about crap.
Here is the ritalin 'party ride', as a brief schedule of events which I generally experience. I have put it in terms of insufflating the drug, becuase it acts quicker this way, and it is how most recreational Ritalin use is done.
T+ three to five minutes: I will feel a jump in alertness, an upswing in mood, perhaps some mild to moderate euphoria. Physically, I might sweat, my stomach may flutter, and I may feel some mild nausea (especially on an empty stomach). Most alarmingly, I may feel some chest palpitations. This should pass soon. This is a pretty transitory state.
T+ fifteen to twenty minutes: The 'rush' will have mostly passed, but I will start to really get into conversations, or pointed activities such as games, or the progression of trying to angle towards having fucksex with someone. I will be fidgety in the feet or legs and hands, and may experience some tingling of the extremities or genitals, and have some palm sweat. Having a few beers takes the edge off this effect.
T+ forty minutes - 2.5 hours: This is the meat of the ritalin high, and is the time when I feel that I am 'in the groove' with the substance. I will be past the main jitters, but will still have an intensified alertness. I will have mellowed socially a bit, but still will be more conversational than usual. In some cases, I will be an absolute chatterbox. I drink alot of water, since I start to get a little dry mouth. I consciously try to relax my jaw if I remember, otherwise my teeth and jaw may hurt a bit the next day. When I feel the alertness tapering off, I may take a bit more ritalin, although I will probably not feel as much of a rush, but fidgeting and a knotted stomach will return in full force.
Experience Reports are the writings and opinions of the individual authors who submit them.
Some of the activities described are dangerous and/or illegal and none are recommended by Erowid.


Basic Life Support (BLS) Instructors are awesome!
Let him/her know that you are interested
in getting BLS Instructor certified.
Buy the AHA Core Instructor Course:
Emergency Cardiovascular Care Booklet.
This is available at many retailers, including Amazon.
Be careful when purchasing the course,
as some of the retailers may not include the CD with the booklet.
You required (by the AHA) to have a copy of this booklet.
Here at Rice, we’ll be operating under the Honor Code.

You bought the wrong course.
No worries, we have a solution.
Email or send a copy of it to the CPR/AED Lieutenant.
Email the CPR/AED Lieutenant for details.
Assuming nothing goes terribly wrong,
you are now certified as an AHA BLS Instructor
and can get paid to teach classes at Rice
and in the TMC.


(Adapted from Introduction to Programming with Java: A Problem-Solving Approach, Dean and Dean, McGraw-Hill.)
A good way to support weight on a bridge is to use a truss structure, shown below. For simplicity, we discuss the situation as though there were just one truss. Actually, of course, there are two – one on either side of the road. The loadings we use apply to the whole bridge, so when we conclude that a particular member has a certain load, that load is actually carried by two identical members – one on either side of the road.
The solid lines are steel members, and the white arrows are forces. The large up arrow (labeled P) below each end is the pier force, pierForce, that supports one end of the bridge. The large down arrow in the center (labeled L) is the weight of a load halfway across the bridge, centerLoad. Each medium-sized down arrow across the bottom represents the weight of the road and bottom structural members in one of the four sections of the bridge, roadWeight. Each small arrow represents the weight of an above-road structural member, structuralWeight.
Each junction is identified by a bold capital letter (A, B, C, D, E, F, G, H, I), and each structural member is identified by a unique pair of these letters. The small lower-case letters in the figure indicate whether a particular steel member is in tension (t) or compression (c). All the bottom (road-level) members are in tension, all the top members are in compression (negative tension), and the diagonal members alternate between tension (insides) and compression (outsides).
Since the bridge is stationary, there is no acceleration, and we can analyze it by noting that at each junction, the total force upward must equal zero, and the total force to the right must equal zero. The problem is symmetrical, so it’s sufficient to analyze half of the bridge. Let’s start with vertical forces and go from junction E back to junction A.
The vertical force exerted by diagonal DE on junction E is
upForceOnEbyDE ← centerLoad/2 + roadWeight/2.
The centerLoad is divided by 2 because this load is shared by DE and EF. The roadWeight is divided by 2 because half the weight of CE is carried by BC. DE is in tension, so its vertical force on junction E is upward and the sign of this force is positive.
The vertical force exerted by diagonal DE on junction D is
upForceOnDbyDE ← -upForceOnEbyDE – structuralWeight.
The negative signs indicate a reversed and downward force direction, respectively. The structuralWeight term accounts for DE’s own weight.
The vertical force exerted by the diagonal CD on junction D is
upForceOnDbyCD ← -upForceOnDbyDE + structuralWeight.
CD is in compression, so its vertical force on junction D is upward. The structuralWeight is half the weight of DF plus half the weight of BD.
Continuing in this fashion, we also have:
upForceOnCbyCD ← -upForceOnDbyCD – structuralWeight;
upForceOnCbyBC ← -upForceOnCbyCD + roadWeight;
upForceOnBbyBC ← -upForceOnCbyBC – structuralWeight;
upForceOnBbyAB ← -upForceOnBbyBC + structuralWeight/2;
upForceOnAbyAB ← -upForceOnBbyAB - structuralWeight;
pierForce ← -upForceOnAbyAB + roadWeight/2.
Because AB is sloping, its compressive force pushes down not only on junction A. It also pushes to the left, and this leftward horizontal force is exactly balanced by a rightward horizontal force exerted by AC. This particular truss employs equilateral triangles, so each of its internal angles is 60o. Either trigonometry or the Pythagorean theorem says that the tensile force along the axis of any across-the-road diagonal pair is equal to 1/Sin(60) = 2/sqrt(3) = 1.1547 times the vertical force exerted on the upper end of that member. Thus,
tensionAtAinAB ← 1.1547 * upForceOnAbyAB;
tensionAtBinBC ← -1.1547 * upForceOnBbyBC;
tensionAtCinCD ← 1.1547 * upForceOnCbyCD;
tensionAtDinDE ← -1.1547 * upForceOnDbyDE.
Also, the horizontal force exerted by any diagonal member is equal to half the axial force or 1/Tan(60) = 1/sqrt(3) = 0.57735 times the vertical force exerted by that member. This gives us equations for the forces in the horizontal members:
rightForceOnAbyAC ← -0.57735 * upForceOnAbyAB;
rightForceOnCbyAC ← - rightForceOnAbyAC;
rightForceOnCbyCE ← - rightForceOnCbyAC + 0.57735 *
(upForceOnCbyBC - upForceOnCbyCD);
rightForceOnBbyBD ← -0.57735 *
(upForceOnBbyAB – upForceOnBbyBC);
rightForceOnDbyBD ← -rightForceOnBbyBD;
rightForceOnDbyDF ← -rightForceOnDbyBD -0.57735 *
(upForceOnDbyCD – upForceOnDbyDE).
Since the horizontal forces are along the axes of the horizontal members, we have:
tensionAtAinAC ← rightForceOnAbyAC;
tensionAtCinCE ← rightForceOnCbyCE;
tensionAtBinBD ← rightForceOnBbyBD;
tensionAtDinDF ← rightForceOnDbyDF.
a) Using initialized values:
Write a program that uses named constants for centerLoad, roadWeight, and structuralWeight. Your program should calculate the value of pierForce, plus the tension in all members of the truss. This does not involve fancy mathematics. Just evaluate the expressions and make the assignments in the order in which they have been presented above, using results of previous calculations for the next one. Make your program so that what appears on your computer screen matches the following sample session. The first three lines show the named constant values, and the subsequent lines show values that your program calculates.
Sample session:
Assumed center load in lbs: 20000
Assumed weight of one section of road in lbs: 2000
Assumed weight of structural pair in lbs: 500
Support for half of bridge = 16750 lbs.
Total tension in BD = -17464 lbs.
Total tension in DF = -31032 lbs.
Total tension in AB = -18186 lbs.
Total tension in BC = 17320 lbs.
Total tension in CD = -14433 lbs.
Total tension in DE = 13279 lbs.
Total tension in AC = 9093 lbs.
Total tension in CE = 24681 lbs.
b) Using inputs:
Modify the program of part A to make it accept inputs that override the initialized values. Make your program so that what appears on your computer screen matches the following sample session. As always, if a sample session contains italicized values, those values indicate user input.
Sample session:
Enter center load in lbs: 20000
Enter weight of one section of road in lbs: 2000
Enter weight of structural member in lbs: 500
Support for half of bridge = 16750 lbs.
Total tension in BD = -17464 lbs.
Total tension in DF = -31032 lbs.
Total tension in AB = -18186 lbs.
Total tension in BC = 17320 lbs.
Total tension in CD = -14433 lbs.
Total tension in DE = 13279 lbs.
Total tension in AC = 9093 lbs.
Total tension in CE = 24681 lbs.


Add a new simulation¶
Keep in mind that the systems we can add to our API are those that can be
integrated by scipy.integrate.solve_ivp
. Those are basically first order
coupled differential equations i.e. systems of the form
If you want to add a new simulation to this API just follow the steps described below.
1. Add the simulation to simulations
module¶
Add a relevant class to
simulations
. This class will define the relevant parameters used in the simulation as well as its dynamic equations. It must inheritSimulation
and must have the same structure asHarmonicOsc1D
andChenLeeAttractor
. Don’t forget to test your simulation by playing around indemo_run_simulation
.Don’t forget to add the attribute
system
to your class. The value of this attribute must be the name of the system separated by dashes. Use only alphanumerical characters and dashes.Add the relevant simulation class you just created to the
dict
Simulations
. This will tell the API that the simulation exists and it is available.
2. Add relevant schemas and models to schemas
¶
Follow the steps mentioned below –some of them may not make sense at first glance, but until you write the code.
Add the
system
attribute value of the recently created class toSimSystem
.Create a class that inherits
SimForm
. It must be similar toHOSimForm
andChenLeeSimForm
. This class will be used to check the simulation information provided in frontend.Add a relevant item –related to the class created in the last numeral– to the
dict
SimFormDict
. This will map the name of the system to its simulation form model.Add a new class similar to
HOParams
andChenLeeParams
. The names of the attributes must match the names of the parameters defined in the relevant simulation class, created in the first numeral of this list.Add an appropiate item to the
dict
SimSystem_to_SimParams
.Create an appropiate
dict
similar toparams_mapping_HO
andparams_mapping_ChenLee
.Add an appropiate item to the dict
system_to_params_dict
.Create a new class similar to
PlotQueryValues_HO
andPlotQueryValues_ChenLee
.Add an appropiate item to
PlotQueryValues
.
If you do not understand some of the steps above or how to implement them, refer to the documentaton of the relevant classes or schemas for the already available systems –Chen-Lee Attractor or Harmonic Oscillator–, it may enlighten you.
3. Add relevant plots to _plot_solution()
¶
Here you can add two or three intersting plots related to the simulation you
just added and tested. The code that generates the plots must be placed in
simulation_api.controller.tasks._plot_solution()
.
A few things to take into account:
We use matplotlib, but we use the class
Figure
directly, we do not use pyplot. This is related to some problems that may arise with the pyplot package and the web applocation backend, as mentioned in matplotlib’s documentation.Note that the plots related to the simulations are defined in an
if
orelif
block each one. Add a new block for the simulation you want to add.The first two lines of code that generate each plot related to the recently created simulation must look something like:
plot_query_value = PlotQueryValues_HO.phase.value plot_query_values.append(plot_query_value)
For each generated plot, we define a
plot_query_value
that comes directly from the class defined in item number 8 of the last section. In the example given above, the class was namedPlotQueryValues_HO
, the attribute related to theplot_query_value
of the relevant plot was namedcoord
and the value of the latter is accessed by using.value
. Eachplot_query_value
is appended to the listplot_query_values
, which is the return value of_plot_solution()
. This item is very important, since the values we define here are used to name the plots as well as to look them up.Finally, the last line of code that generates each plot must be:
fig.savefig(_create_plot_path_disk(plots_basename, plot_query_value))
This will ensure that the name of the plot has always the same format
4. Add relevant form entries in frontend¶
Modify appropiately the template simulation_api/templates/request-simulation.html
.
This template is the one that asks for the simulation parameters in the frontend.
Some things to take into account:
Note that each system has its own
if
orelif
block. Stick to this convention and add a new block related to the new simulation (the new system).In the
if
block mentioned above there are only two main things the form should ask for: initial conditions and parameters of simulation.For the initial conditions the value of the HTML attribute
name
should start with the string"ini"
followed by the index in the initial condition array defined in your simulation class attributeini_cndtn
. For example, for the harmonic oscillator the convention of initial condition is \(\texttt{ini_cndtn} = [q_0, p_0]\). So, \(q_0\) will be associated withname="ini0"
and \(p_0\) withname="ini1"
.Analogous to the initial condition convention mentioned in the last item, you must choose an arbitrary convention for the names of the parameters of each specific system but you should stick to this convention when defining the models and schemas associated to the parameters and mentioned in the previous to last section. Specifically, you should stick to the convention you define here and follow it in item number 6 of the previous to last section. For example, in the Harmonic Oscillator we chose the convention of associating the parameter
m
with the HTML attributename="param0"
andk
withname="param1"
. You can check thatsimulation_api/templates/request-simulation.html
as well asparams_mapping_HO
follow this convention.
5. Modify results.html
template to show results¶
Finally, we need to add a relevant elif
block to the template
simulation_api/templates/results.html
. This template should show the
generated plots, give the option to download them with a button and
give the option to download the pickle file as well.


{%extends 'dashboard/dash-base.html'%} {% load bootstrap3 %} {% block content%}
Comments
{% if comments%} {%for comment in comments%}
{{comment.comment}}
No comments here.Be the first to comment


Supporting multiple carets
Introduction
Support for multiple independent carets has been added to editor implementation in IDEA 13.1. Most editor actions (keyboard navigation, text insertion and deletion, etc) will be applied to each caret independently. Each caret has its own associated selection, which is a continuous range of document characters (can be empty). When after some action two or more carets end up in the same visual position, they are merged into a single caret with their associated selections merged into a single one. Similar thing will happen when selections for several carets become overlapped, only one of the carets will remain, and the selections will be merged. There’s a concept of ‘primary’ caret - the one on which non-multi-caret-aware actions and the actions which need a single-point document context (like code completion) will operate. Currently, the most recent caret is considered the primary one.
Core functionality
Core logic related to multi-caret implementation such as accessing currently existing carets adding and removing carets is available via CaretModel interface, some changes also have been made in SelectionModel interface. Check Javadoc of those interfaces for details.
Notable changes from old behaviour:
-
Previously existing methods in CaretModel and SelectionModel to query and modify caret and selection positions work by default on the primary caret now. In the context of CaretModel.runForEachCaret method though, they operate on the current caret. So the behaviour of legacy code (not using Caret interface) will depend on the context of its invocation.
-
Block selection doesn’t exist as a separate concept anymore. Correspondingly, block-selection-related methods in SelectionModel interface have changed behaviour - hasBlockSelection() will always return false, setBlockSelection() will create a multi-caret selection equivalent to the requested block selection. getBlockSelectionStarts() and getBlockSelectionEnds() methods work in multi-caret state, returning all selected regions.
Editor actions
EditorAction and EditorActionHandler
When EditorActionHandler is invoked, additional parameter will be passed to it - caret instance on which it should operate, or null, if it’s invoked without any caret context. If the handler invokes another handler (delegate handler for the same actionId, or a completely unrelated handler), that parameter should normally be passed to the delegate unchanged (unless no context caret has been provided to the handler, but it needs to invoke another handler on a specific caret). Of course, handler can just ignore the caret parameter if its functionality is not related to caret/selection position.
If handler needs to implement multi-caret functionality it can do so explicitly in the overridden doExecute method, but if it just needs that method to be invoked for each caret, it’s enough to pass a parameter to EditorActionHandler constructor to make doExecute called for each caret, when the handler is invoked without specific caret context.
Editor action delegates
The following delegates are available:
- EnterHandlerDelegate
- BackspaceHandlerDelegate
- JoinLinesHandlerDelegate
- EditorNavigationDelegate
- SmartEnterProcessor
- CommentCompleteHandler
- StatementUpDownMover
- CodeBlockProvider
At the moment there’s no need to make any changes in the handlers to support multiple carets - they are already invoked for each caret.
Typing actions
TypedActionHandler, TypedHandlerDelegate
TypedActionHandler and TypedHandlerDelegate implementations are invoked only once for each typed character. If those handlers need to support multiple carets, they will need to implement that explicitly.
EditorModificationUtil. typeInStringAtCaretHonorMultipleCarets utility method is available to do the most common task in this case - inserting the same text into all caret positions and/or moving all carets relatively to their current position. Examples of its usage:
Note: Starting from IDEA 14, TypedHandlerDelegate implementations are invoked automatically for each caret. If one wants to implement custom multicaret behaviour on typing, TypedActionHandler needs to be provided instead.
Code insight actions
Existing actions inheriting from CodeInsightAction will work for primary caret only. To support in multiple carets one should inherit MultiCaretCodeInsightAction instead (each caret might have a different editor and PSI instance, so using old API is not possible). It is available since IDEA 14.


Scenes
Create, save, and load ECS worlds using Bevy's Scene system
- Loading: Loading scenes preserves entity IDs (useful for save games)
- Instancing: Instancing creates linked duplicates of scenes with new entity IDs
- Hot Reloading: Changes to scene files are automatically applied to running apps


|
JavaTM 2 Platform Standard Ed. 5.0 |
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object javax.swing.plaf.ComponentUI javax.swing.plaf.TreeUI javax.swing.plaf.basic.BasicTreeUI
public class BasicTreeUI
The basic L&F for a hierarchical data structure.
| Nested Class Summary | |
|---|---|
class |
BasicTreeUI.CellEditorHandler
Listener responsible for getting cell editing events and updating the tree accordingly. |
class |
BasicTreeUI.ComponentHandler
Updates the preferred size when scrolling (if necessary). |
class |
BasicTreeUI.FocusHandler
Repaints the lead selection row when focus is lost/gained. |
class |
BasicTreeUI.KeyHandler
This is used to get mutliple key down events to appropriately generate events. |
class |
BasicTreeUI.MouseHandler
TreeMouseListener is responsible for updating the selection based on mouse events. |
class |
BasicTreeUI.MouseInputHandler
MouseInputHandler handles passing all mouse events, including mouse motion events, until the mouse is released to the destination it is constructed with. |
class |
BasicTreeUI.NodeDimensionsHandler
Class responsible for getting size of node, method is forwarded to BasicTreeUI method. |
class |
BasicTreeUI.PropertyChangeHandler
PropertyChangeListener for the tree. |
class |
BasicTreeUI.SelectionModelPropertyChangeHandler
Listener on the TreeSelectionModel, resets the row selection if any of the properties of the model change. |
class |
BasicTreeUI.TreeCancelEditingAction
ActionListener that invokes cancelEditing when action performed. |
class |
BasicTreeUI.TreeExpansionHandler
Updates the TreeState in response to nodes expanding/collapsing. |
class |
BasicTreeUI.TreeHomeAction
TreeHomeAction is used to handle end/home actions. |
class |
BasicTreeUI.TreeIncrementAction
TreeIncrementAction is used to handle up/down actions. |
class |
BasicTreeUI.TreeModelHandler
Forwards all TreeModel events to the TreeState. |
class |
BasicTreeUI.TreePageAction
TreePageAction handles page up and page down events. |
class |
BasicTreeUI.TreeSelectionHandler
Listens for changes in the selection model and updates the display accordingly. |
class |
BasicTreeUI.TreeToggleAction
For the first selected row expandedness will be toggled. |
class |
BasicTreeUI.TreeTraverseAction
TreeTraverseAction is the action used for left/right keys. |
| Field Summary | |
|---|---|
protected TreeCellEditor |
cellEditor
Editor for the tree. |
protected Icon |
collapsedIcon
|
protected boolean |
createdCellEditor
Set to true if editor that is currently in the tree was created by this instance. |
protected boolean |
createdRenderer
Set to true if the renderer that is currently in the tree was created by this instance. |
protected TreeCellRenderer |
currentCellRenderer
Renderer that is being used to do the actual cell drawing. |
protected int |
depthOffset
How much the depth should be offset to properly calculate x locations. |
protected Hashtable<TreePath,Boolean> |
drawingCache
Used for minimizing the drawing of vertical lines. |
protected Component |
editingComponent
When editing, this will be the Component that is doing the actual editing. |
protected TreePath |
editingPath
Path that is being edited. |
protected int |
editingRow
Row that is being edited. |
protected boolean |
editorHasDifferentSize
Set to true if the editor has a different size than the renderer. |
protected Icon |
expandedIcon
|
protected boolean |
largeModel
True if doing optimizations for a largeModel. |
protected int |
lastSelectedRow
Index of the row that was last selected. |
protected int |
leftChildIndent
Distance between left margin and where vertical dashes will be drawn. |
protected AbstractLayoutCache.NodeDimensions |
nodeDimensions
Reponsible for telling the TreeState the size needed for a node. |
protected Dimension |
preferredMinSize
Minimum preferred size. |
protected Dimension |
preferredSize
Size needed to completely display all the nodes. |
protected CellRendererPane |
rendererPane
Used to paint the TreeCellRenderer. |
protected int |
rightChildIndent
Distance to add to leftChildIndent to determine where cell contents will be drawn. |
protected boolean |
stopEditingInCompleteEditing
Set to false when editing and shouldSelectCell() returns true meaning the node should be selected before editing, used in completeEditing. |
protected int |
totalChildIndent
Total distance that will be indented. |
protected JTree |
tree
Component that we're going to be drawing into. |
protected TreeModel |
treeModel
Used to determine what to display. |
protected TreeSelectionModel |
treeSelectionModel
Model maintaing the selection. |
protected AbstractLayoutCache |
treeState
Object responsible for handling sizing and expanded issues. |
protected boolean |
validCachedPreferredSize
Is the preferredSize valid? |
| Constructor Summary | |
|---|---|
BasicTreeUI()
|
| Method Summary | |
|---|---|
void |
cancelEditing(JTree tree)
Cancels the current editing session. |
protected void |
checkForClickInExpandControl(TreePath path,
int mouseX,
int mouseY)
If the mouseX and mouseY are in the
expand/collapse region of the row , this will toggle
the row. |
protected void |
completeEditing()
Messages to stop the editing session. |
protected void |
completeEditing(boolean messageStop,
boolean messageCancel,
boolean messageTree)
Stops the editing session. |
protected void |
completeUIInstall()
Invoked from installUI after all the defaults/listeners have been installed. |
protected void |
completeUIUninstall()
|
protected void |
configureLayoutCache()
Resets the TreeState instance based on the tree we're providing the look and feel for. |
protected CellEditorListener |
createCellEditorListener()
Creates a listener to handle events from the current editor. |
protected CellRendererPane |
createCellRendererPane()
Returns the renderer pane that renderer components are placed in. |
protected ComponentListener |
createComponentListener()
Creates and returns a new ComponentHandler. |
protected TreeCellEditor |
createDefaultCellEditor()
Creates a default cell editor. |
protected TreeCellRenderer |
createDefaultCellRenderer()
Returns the default cell renderer that is used to do the stamping of each node. |
protected FocusListener |
createFocusListener()
Creates a listener that is responsible for updating the display when focus is lost/gained. |
protected KeyListener |
createKeyListener()
Creates the listener reponsible for getting key events from the tree. |
protected AbstractLayoutCache |
createLayoutCache()
Creates the object responsible for managing what is expanded, as well as the size of nodes. |
protected MouseListener |
createMouseListener()
Creates the listener responsible for updating the selection based on mouse events. |
protected AbstractLayoutCache.NodeDimensions |
createNodeDimensions()
Creates an instance of NodeDimensions that is able to determine the size of a given node in the tree. |
protected PropertyChangeListener |
createPropertyChangeListener()
Creates a listener that is responsible that updates the UI based on how the tree changes. |
protected PropertyChangeListener |
createSelectionModelPropertyChangeListener()
Creates the listener responsible for getting property change events from the selection model. |
protected TreeExpansionListener |
createTreeExpansionListener()
Creates and returns the object responsible for updating the treestate when nodes expanded state changes. |
protected TreeModelListener |
createTreeModelListener()
Returns a listener that can update the tree when the model changes. |
protected TreeSelectionListener |
createTreeSelectionListener()
Creates the listener that updates the display based on selection change methods. |
static ComponentUI |
createUI(JComponent x)
|
protected void |
drawCentered(Component c,
Graphics graphics,
Icon icon,
int x,
int y)
|
protected void |
drawDashedHorizontalLine(Graphics g,
int y,
int x1,
int x2)
|
protected void |
drawDashedVerticalLine(Graphics g,
int x,
int y1,
int y2)
|
protected void |
ensureRowsAreVisible(int beginRow,
int endRow)
Ensures that the rows identified by beginRow through endRow are visible. |
protected TreeCellEditor |
getCellEditor()
|
protected TreeCellRenderer |
getCellRenderer()
Return currentCellRenderer, which will either be the trees renderer, or defaultCellRenderer, which ever wasn't null. |
TreePath |
getClosestPathForLocation(JTree tree,
int x,
int y)
Returns the path to the node that is closest to x,y. |
Icon |
getCollapsedIcon()
|
TreePath |
getEditingPath(JTree tree)
Returns the path to the element that is being edited. |
Icon |
getExpandedIcon()
|
protected Color |
getHashColor()
|
protected int |
getHorizontalLegBuffer()
The horizontal element of legs between nodes starts at the right of the left-hand side of the child node by default. |
protected TreePath |
getLastChildPath(TreePath parent)
Returns a path to the last child of parent . |
int |
getLeftChildIndent()
|
Dimension |
getMaximumSize(JComponent c)
Returns the maximum size for this component, which will be the preferred size if the instance is currently in a JTree, or 0, 0. |
Dimension |
getMinimumSize(JComponent c)
Returns the minimum size for this component. |
protected TreeModel |
getModel()
|
Rectangle |
getPathBounds(JTree tree,
TreePath path)
Returns the Rectangle enclosing the label portion that the last item in path will be drawn into. |
TreePath |
getPathForRow(JTree tree,
int row)
Returns the path for passed in row. |
Dimension |
getPreferredMinSize()
Returns the minimum preferred size. |
Dimension |
getPreferredSize(JComponent c)
Returns the preferred size to properly display the tree, this is a cover method for getPreferredSize(c, false). |
Dimension |
getPreferredSize(JComponent c,
boolean checkConsistancy)
Returns the preferred size to represent the tree in c. |
int |
getRightChildIndent()
|
int |
getRowCount(JTree tree)
Returns the number of rows that are being displayed. |
int |
getRowForPath(JTree tree,
TreePath path)
Returns the row that the last item identified in path is visible at. |
protected int |
getRowHeight()
|
protected int |
getRowX(int row,
int depth)
Returns the location, along the x-axis, to render a particular row at. |
protected TreeSelectionModel |
getSelectionModel()
|
protected boolean |
getShowsRootHandles()
|
protected int |
getVerticalLegBuffer()
The vertical element of legs between nodes starts at the bottom of the parent node by default. |
protected void |
handleExpandControlClick(TreePath path,
int mouseX,
int mouseY)
Messaged when the user clicks the particular row, this invokes toggleExpandState. |
protected void |
installComponents()
Intalls the subcomponents of the tree, which is the renderer pane. |
protected void |
installDefaults()
|
protected void |
installKeyboardActions()
|
protected void |
installListeners()
|
void |
installUI(JComponent c)
Configures the specified component appropriate for the look and feel. |
protected boolean |
isEditable()
|
boolean |
isEditing(JTree tree)
Returns true if the tree is being edited. |
protected boolean |
isLargeModel()
|
protected boolean |
isLeaf(int row)
|
protected boolean |
isLocationInExpandControl(TreePath path,
int mouseX,
int mouseY)
Returns true if mouseX and mouseY fall
in the area of row that is used to expand/collapse the node and
the node at row does not represent a leaf. |
protected boolean |
isMultiSelectEvent(MouseEvent event)
Returning true signifies a mouse event on the node should select from the anchor point. |
protected boolean |
isRootVisible()
|
protected boolean |
isToggleEvent(MouseEvent event)
Returning true indicates the row under the mouse should be toggled based on the event. |
protected boolean |
isToggleSelectionEvent(MouseEvent event)
Returning true signifies a mouse event on the node should toggle the selection of only the row under mouse. |
void |
paint(Graphics g,
JComponent c)
Paints the specified component appropriate for the look and feel. |
protected void |
paintExpandControl(Graphics g,
Rectangle clipBounds,
Insets insets,
Rectangle bounds,
TreePath path,
int row,
boolean isExpanded,
boolean hasBeenExpanded,
boolean isLeaf)
Paints the expand (toggle) part of a row. |
protected void |
paintHorizontalLine(Graphics g,
JComponent c,
int y,
int left,
int right)
Paints a horizontal line. |
protected void |
paintHorizontalPartOfLeg(Graphics g,
Rectangle clipBounds,
Insets insets,
Rectangle bounds,
TreePath path,
int row,
boolean isExpanded,
boolean hasBeenExpanded,
boolean isLeaf)
Paints the horizontal part of the leg. |
protected void |
paintRow(Graphics g,
Rectangle clipBounds,
Insets insets,
Rectangle bounds,
TreePath path,
int row,
boolean isExpanded,
boolean hasBeenExpanded,
boolean isLeaf)
Paints the renderer part of a row. |
protected void |
paintVerticalLine(Graphics g,
JComponent c,
int x,
int top,
int bottom)
Paints a vertical line. |
protected void |
paintVerticalPartOfLeg(Graphics g,
Rectangle clipBounds,
Insets insets,
TreePath path)
Paints the vertical part of the leg. |
protected void |
pathWasCollapsed(TreePath path)
Messaged from the VisibleTreeNode after it has collapsed. |
protected void |
pathWasExpanded(TreePath path)
Messaged from the VisibleTreeNode after it has been expanded. |
protected void |
prepareForUIInstall()
Invoked after the tree instance variable has been
set, but before any defaults/listeners have been installed. |
protected void |
prepareForUIUninstall()
|
protected void |
selectPathForEvent(TreePath path,
MouseEvent event)
Messaged to update the selection based on a MouseEvent over a particular row. |
protected void |
setCellEditor(TreeCellEditor editor)
Sets the cell editor. |
protected void |
setCellRenderer(TreeCellRenderer tcr)
Sets the TreeCellRenderer to tcr . |
void |
setCollapsedIcon(Icon newG)
|
protected void |
setEditable(boolean newValue)
Configures the receiver to allow, or not allow, editing. |
void |
setExpandedIcon(Icon newG)
|
protected void |
setHashColor(Color color)
|
protected void |
setLargeModel(boolean largeModel)
Updates the componentListener, if necessary. |
void |
setLeftChildIndent(int newAmount)
|
protected void |
setModel(TreeModel model)
Sets the TreeModel. |
void |
setPreferredMinSize(Dimension newSize)
Sets the preferred minimum size. |
void |
setRightChildIndent(int newAmount)
|
protected void |
setRootVisible(boolean newValue)
Sets the root to being visible. |
protected void |
setRowHeight(int rowHeight)
Sets the row height, this is forwarded to the treeState. |
protected void |
setSelectionModel(TreeSelectionModel newLSM)
Resets the selection model. |
protected void |
setShowsRootHandles(boolean newValue)
Determines whether the node handles are to be displayed. |
protected boolean |
shouldPaintExpandControl(TreePath path,
int row,
boolean isExpanded,
boolean hasBeenExpanded,
boolean isLeaf)
Returns true if the expand (toggle) control should be drawn for the specified row. |
protected boolean |
startEditing(TreePath path,
MouseEvent event)
Will start editing for node if there is a cellEditor and shouldSelectCell returns true. |
void |
startEditingAtPath(JTree tree,
TreePath path)
Selects the last item in path and tries to edit it. |
boolean |
stopEditing(JTree tree)
Stops the current editing session. |
protected void |
toggleExpandState(TreePath path)
Expands path if it is not expanded, or collapses row if it is expanded. |
protected void |
uninstallComponents()
Uninstalls the renderer pane. |
protected void |
uninstallDefaults()
|
protected void |
uninstallKeyboardActions()
|
protected void |
uninstallListeners()
|
void |
uninstallUI(JComponent c)
Reverses configuration which was done on the specified component during installUI . |
protected void |
updateCachedPreferredSize()
Updates the preferredSize instance variable,
which is returned from getPreferredSize() . |
protected void |
updateCellEditor()
Updates the cellEditor based on the editability of the JTree that we're contained in. |
protected void |
updateDepthOffset()
Updates how much each depth should be offset by. |
protected void |
updateExpandedDescendants(TreePath path)
Updates the expanded state of all the descendants of path
by getting the expanded descendants from the tree and forwarding
to the tree state. |
protected void |
updateLayoutCacheExpandedNodes()
Makes all the nodes that are expanded in JTree expanded in LayoutCache. |
protected void |
updateRenderer()
Messaged from the tree we're in when the renderer has changed. |
protected void |
updateSize()
Marks the cached size as being invalid, and messages the tree with treeDidChange . |
| Methods inherited from class javax.swing.plaf.ComponentUI |
|---|
contains, getAccessibleChild, getAccessibleChildrenCount, update |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Field Detail |
|---|
protected transient Icon collapsedIcon
protected transient Icon expandedIcon
protected int leftChildIndent
protected int rightChildIndent
protected int totalChildIndent
protected Dimension preferredMinSize
protected int lastSelectedRow
protected JTree tree
protected transient TreeCellRenderer currentCellRenderer
protected boolean createdRenderer
protected transient TreeCellEditor cellEditor
protected boolean createdCellEditor
protected boolean stopEditingInCompleteEditing
protected CellRendererPane rendererPane
protected Dimension preferredSize
protected boolean validCachedPreferredSize
protected AbstractLayoutCache treeState
protected Hashtable<TreePath,Boolean> drawingCache
protected boolean largeModel
protected AbstractLayoutCache.NodeDimensions nodeDimensions
protected TreeModel treeModel
protected TreeSelectionModel treeSelectionModel
protected int depthOffset
protected Component editingComponent
protected TreePath editingPath
protected int editingRow
protected boolean editorHasDifferentSize
| Constructor Detail |
|---|
public BasicTreeUI()
| Method Detail |
|---|
public static ComponentUI createUI(JComponent x)
protected Color getHashColor()
protected void setHashColor(Color color)
public void setLeftChildIndent(int newAmount)
public int getLeftChildIndent()
public void setRightChildIndent(int newAmount)
public int getRightChildIndent()
public void setExpandedIcon(Icon newG)
public Icon getExpandedIcon()
public void setCollapsedIcon(Icon newG)
public Icon getCollapsedIcon()
protected void setLargeModel(boolean largeModel)
protected boolean isLargeModel()
protected void setRowHeight(int rowHeight)
protected int getRowHeight()
protected void setCellRenderer(TreeCellRenderer tcr)
tcr
. This invokes
updateRenderer
.
protected TreeCellRenderer getCellRenderer()
protected void setModel(TreeModel model)
protected TreeModel getModel()
protected void setRootVisible(boolean newValue)
protected boolean isRootVisible()
protected void setShowsRootHandles(boolean newValue)
protected boolean getShowsRootHandles()
protected void setCellEditor(TreeCellEditor editor)
protected TreeCellEditor getCellEditor()
protected void setEditable(boolean newValue)
protected boolean isEditable()
protected void setSelectionModel(TreeSelectionModel newLSM)
protected TreeSelectionModel getSelectionModel()
public Rectangle getPathBounds(JTree tree, TreePath path)
getPathBounds
in class TreeUI
public TreePath getPathForRow(JTree tree, int row)
getPathForRow
in class TreeUI
public int getRowForPath(JTree tree, TreePath path)
getRowForPath
in class TreeUI
public int getRowCount(JTree tree)
getRowCount
in class TreeUI
public TreePath getClosestPathForLocation(JTree tree, int x, int y)
getClosestPathForLocation
in class TreeUI
public boolean isEditing(JTree tree)
isEditing
in class TreeUI
public boolean stopEditing(JTree tree)
stopEditing
in class TreeUI
public void cancelEditing(JTree tree)
cancelEditing
in class TreeUI
public void startEditingAtPath(JTree tree, TreePath path)
startEditingAtPath
in class TreeUI
public TreePath getEditingPath(JTree tree)
getEditingPath
in class TreeUI
public void installUI(JComponent c)
ComponentUI
ComponentUI
instance is being installed
as the UI delegate on the specified component. This method should
completely configure the component for the look and feel,
including the following:
LayoutManager
on the component if necessary.
PropertyChangeListener
on the component in order
to detect and respond to component property changes appropriately.
installUI
in class ComponentUI
c
- the component where this UI delegate is being installedComponentUI.uninstallUI(javax.swing.JComponent)
,
JComponent.setUI(javax.swing.plaf.ComponentUI)
,
JComponent.updateUI()
protected void prepareForUIInstall()
tree
instance variable has been
set, but before any defaults/listeners have been installed.
protected void completeUIInstall()
protected void installDefaults()
protected void installListeners()
protected void installKeyboardActions()
protected void installComponents()
protected AbstractLayoutCache.NodeDimensions createNodeDimensions()
protected PropertyChangeListener createPropertyChangeListener()
protected MouseListener createMouseListener()
protected FocusListener createFocusListener()
protected KeyListener createKeyListener()
protected PropertyChangeListener createSelectionModelPropertyChangeListener()
protected TreeSelectionListener createTreeSelectionListener()
protected CellEditorListener createCellEditorListener()
protected ComponentListener createComponentListener()
protected TreeExpansionListener createTreeExpansionListener()
protected AbstractLayoutCache createLayoutCache()
protected CellRendererPane createCellRendererPane()
protected TreeCellEditor createDefaultCellEditor()
protected TreeCellRenderer createDefaultCellRenderer()
protected TreeModelListener createTreeModelListener()
public void uninstallUI(JComponent c)
ComponentUI
installUI
. This method is invoked when this
UIComponent
instance is being removed as the UI delegate
for the specified component. This method should undo the
configuration performed in installUI
, being careful to
leave the JComponent
instance in a clean state (no
extraneous listeners, look-and-feel-specific property objects, etc.).
This should include the following:
uninstallUI
in class ComponentUI
c
- the component from which this UI delegate is being removed;
this argument is often ignored,
but might be used if the UI object is stateless
and shared by multiple componentsComponentUI.installUI(javax.swing.JComponent)
,
JComponent.updateUI()
protected void prepareForUIUninstall()
protected void completeUIUninstall()
protected void uninstallDefaults()
protected void uninstallListeners()
protected void uninstallKeyboardActions()
protected void uninstallComponents()
public void paint(Graphics g, JComponent c)
ComponentUI
ComponentUI.update
method when
the specified component is being painted. Subclasses should override
this method and use the specified Graphics
object to
render the content of the component.
paint
in class ComponentUI
g
- the Graphics
context in which to paintc
- the component being painted;
this argument is often ignored,
but might be used if the UI object is stateless
and shared by multiple componentsComponentUI.update(java.awt.Graphics, javax.swing.JComponent)
protected void paintHorizontalPartOfLeg(Graphics g, Rectangle clipBounds, Insets insets, Rectangle bounds, TreePath path, int row, boolean isExpanded, boolean hasBeenExpanded, boolean isLeaf)
clipBounds
, or insets
.
NOTE: parentRow
can be -1 if the root is not visible.
protected void paintVerticalPartOfLeg(Graphics g, Rectangle clipBounds, Insets insets, TreePath path)
clipBounds
, insets
.
protected void paintExpandControl(Graphics g, Rectangle clipBounds, Insets insets, Rectangle bounds, TreePath path, int row, boolean isExpanded, boolean hasBeenExpanded, boolean isLeaf)
clipBounds
, or insets
.
protected void paintRow(Graphics g, Rectangle clipBounds, Insets insets, Rectangle bounds, TreePath path, int row, boolean isExpanded, boolean hasBeenExpanded, boolean isLeaf)
clipBounds
, or insets
.
protected boolean shouldPaintExpandControl(TreePath path, int row, boolean isExpanded, boolean hasBeenExpanded, boolean isLeaf)
protected void paintVerticalLine(Graphics g, JComponent c, int x, int top, int bottom)
protected void paintHorizontalLine(Graphics g, JComponent c, int y, int left, int right)
protected int getVerticalLegBuffer()
protected int getHorizontalLegBuffer()
protected void drawCentered(Component c, Graphics graphics, Icon icon, int x, int y)
protected void drawDashedHorizontalLine(Graphics g, int y, int x1, int x2)
protected void drawDashedVerticalLine(Graphics g, int x, int y1, int y2)
protected int getRowX(int row, int depth)
row
- Row to return x location fordepth
- Depth of the row
protected void updateLayoutCacheExpandedNodes()
protected void updateExpandedDescendants(TreePath path)
path
by getting the expanded descendants from the tree and forwarding
to the tree state.
protected TreePath getLastChildPath(TreePath parent)
parent
.
protected void updateDepthOffset()
protected void updateCellEditor()
protected void updateRenderer()
protected void configureLayoutCache()
protected void updateSize()
treeDidChange
.
protected void updateCachedPreferredSize()
preferredSize
instance variable,
which is returned from getPreferredSize()
.For left to right orientations, the size is determined from the current AbstractLayoutCache. For RTL orientations, the preferred size becomes the width minus the minimum x position.
protected void pathWasExpanded(TreePath path)
protected void pathWasCollapsed(TreePath path)
protected void ensureRowsAreVisible(int beginRow, int endRow)
public void setPreferredMinSize(Dimension newSize)
public Dimension getPreferredMinSize()
public Dimension getPreferredSize(JComponent c)
getPreferredSize
in class ComponentUI
c
- the component whose preferred size is being queried;
this argument is often ignored,
but might be used if the UI object is stateless
and shared by multiple componentsJComponent.getPreferredSize()
,
LayoutManager.preferredLayoutSize(java.awt.Container)
public Dimension getPreferredSize(JComponent c, boolean checkConsistancy)
public Dimension getMinimumSize(JComponent c)
getMinimumSize
in class ComponentUI
c
- the component whose minimum size is being queried;
this argument is often ignored,
but might be used if the UI object is stateless
and shared by multiple components
Dimension
object or null
JComponent.getMinimumSize()
,
LayoutManager.minimumLayoutSize(java.awt.Container)
,
ComponentUI.getPreferredSize(javax.swing.JComponent)
public Dimension getMaximumSize(JComponent c)
getMaximumSize
in class ComponentUI
c
- the component whose maximum size is being queried;
this argument is often ignored,
but might be used if the UI object is stateless
and shared by multiple components
Dimension
object or null
JComponent.getMaximumSize()
,
LayoutManager2.maximumLayoutSize(java.awt.Container)
protected void completeEditing()
getInvokesStopCellEditing
, stopCellEditing will
invoked on the current editor. Then completeEditing will
be messaged with false, true, false to cancel any lingering
editing.
protected void completeEditing(boolean messageStop, boolean messageCancel, boolean messageTree)
protected boolean startEditing(TreePath path, MouseEvent event)
This assumes that path is valid and visible.
protected void checkForClickInExpandControl(TreePath path, int mouseX, int mouseY)
mouseX
and mouseY
are in the
expand/collapse region of the row
, this will toggle
the row.
protected boolean isLocationInExpandControl(TreePath path, int mouseX, int mouseY)
mouseX
and mouseY
fall
in the area of row that is used to expand/collapse the node and
the node at row
does not represent a leaf.
protected void handleExpandControlClick(TreePath path, int mouseX, int mouseY)
protected void toggleExpandState(TreePath path)
protected boolean isToggleSelectionEvent(MouseEvent event)
protected boolean isMultiSelectEvent(MouseEvent event)
protected boolean isToggleEvent(MouseEvent event)
protected void selectPathForEvent(TreePath path, MouseEvent event)
protected boolean isLeaf(int row)
row
is a leaf.
|
JavaTM 2 Platform Standard Ed. 5.0 |
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
Copyright © 2004, 2010 Oracle and/or its affiliates. All rights reserved. Use is subject to license terms. Also see the documentation redistribution policy.


|
|
|
|||||||||
|
Password Authentication For a real NodeBrain application, we want to use Webster as an interface to a NodeBrain agent, and perhaps for configuring NodeBrain rules using CGI scripts. But first we need to provide some form of user authentication to limit access to a small number of application administrators. We'll start with basic password authentication. First kill your webster1 process and execute webster2. (If you have problems, you can always go back to using webster1 to access this page again.)
#!/usr/bin/nb -d # File: tutorial/webster/webster2 set out=".",log="webster.log"; define webster node webster); webster. define uri cell "http://<IP_ADDRESS>:62443"; webster. define Authenticate cell "password"; # Default is "yes" webster. define AccessList cell "security/AccessList.conf"; set traceWebster; Click on your browser's refresh button and you should get a prompt for the user and password. Enter user "webster" and password "2torial". These values have been configured in the tutorial/Webster/security/AccessList.conf file included in the distribution. Warning: Using a default configuration like this is not actually secure because anyone with this documentation has access using the default tutorial port, user and password. So you should not leave webster2 running with default values for a long period. Changing or Adding Passwords Although, HTTP basic authentication is not recommended, you can improve it a bit by changing the password. If you don't plan to use basic authentication, you can skip this section, but remember to kill your webster2 process at the end of this tutorial. If you look in your tutorial/Webster/log/webster.log you will see an entry like this.
# Webster Access List # Format: # # role,userid; [# comment] # # role: a - administrator # b - browser # a,d2Vic3RlcjoydG9yaWFs; # webster:2torialThe easiest way to change the user and password is to:
# Webster Access List # Format: # # role,userid; [# comment] # # role: a - administrator # b - browser # #a,d2Vic3RlcjoydG9yaWFs; # webster:2torial a,new-value; Copyright © 2014 NodeBrain.org |


The name of the key under which the ImageCaptchaEngine implementation
class name initialy used by the service is defined in the service
initialization file.
Get the minimum delay (in seconds) a client can
be assured that a captcha generated by the service
can be retrieved and a response to its challenge
tested
A constructor to use of the initialization parameters are
not defined in an initialization class but are provided, in
a Properties object, by the service user.
set the minimum delay (in seconds)a client can
be assured that a captcha generated by the service
can be retrieved and a response to its challenge
tested


|
Name
|
Type
|
Description
|
| activeFlowTimeout | xsd:int |
The number of seconds after which "active" flows are forced to be
exported to the collector. Legal value range is 60-3600. Default 60.
|
| collectorIpAddress | xsd:string |
IP address for the ipfix collector, using IPv4 or IPv6.
IPv6 is supported in vSphere Distributed Switch Version 6.0 or later.
This must be set before ipfix monitoring can be enabled for the
switch, or for any portgroup or port of the switch.
|
| collectorPort | xsd:int |
Port for the ipfix collector. This must be set before ipfix monitoring
can be enabled for the switch, or for any portgroup or port of the
switch. Legal value range is 0-65535.
|
| idleFlowTimeout | xsd:int |
The number of seconds after which "idle" flows are forced to be
exported to the collector. Legal value range is 10-600. Default 15.
|
| internalFlowsOnly | xsd:boolean |
Whether to limit analysis to traffic that has both source and
destination served by the same host. Default false.
|
| observationDomainId | xsd:long |
Observation Domain Id for the ipfix collector. Observation Domain Id is supported
in vSphere Distributed Switch Version 6.0 or later.
Legal value range is 0-((2^32)-1)
Since vSphere API 6.0
|
| samplingRate | xsd:int |
The ratio of total number of packets to the number of packets
analyzed. Set to 0 to disable sampling. Legal value range is 0-1000.
Default 0.
|
|
Properties inherited from DynamicData |
| None |