From 955aaddfa341d8ddcfdba6a830b1e9d7e4cb0f0c Mon Sep 17 00:00:00 2001 From: Kasper Gammeltoft Date: Wed, 3 Jun 2015 17:14:55 -0400 Subject: [PATCH 01/18] Created new ListComponentNattable class, which contains ListComponent data in a Nattable. Signed-off-by: Kasper Gammeltoft --- .../client/widgets/ListComponentNattable.java | 176 ++++++++++++++++++ .../widgets/ListComponentSectionPage.java | 10 +- 2 files changed, 185 insertions(+), 1 deletion(-) create mode 100644 src/org.eclipse.ice.client.widgets/src/org/eclipse/ice/client/widgets/ListComponentNattable.java diff --git a/src/org.eclipse.ice.client.widgets/src/org/eclipse/ice/client/widgets/ListComponentNattable.java b/src/org.eclipse.ice.client.widgets/src/org/eclipse/ice/client/widgets/ListComponentNattable.java new file mode 100644 index 000000000..08763237a --- /dev/null +++ b/src/org.eclipse.ice.client.widgets/src/org/eclipse/ice/client/widgets/ListComponentNattable.java @@ -0,0 +1,176 @@ +package org.eclipse.ice.client.widgets; + +import org.eclipse.ice.datastructures.ICEObject.ListComponent; +import org.eclipse.nebula.widgets.nattable.NatTable; +import org.eclipse.nebula.widgets.nattable.config.AbstractRegistryConfiguration; +import org.eclipse.nebula.widgets.nattable.config.ConfigRegistry; +import org.eclipse.nebula.widgets.nattable.config.DefaultNatTableStyleConfiguration; +import org.eclipse.nebula.widgets.nattable.config.IConfigRegistry; +import org.eclipse.nebula.widgets.nattable.config.IEditableRule; +import org.eclipse.nebula.widgets.nattable.data.IColumnPropertyAccessor; +import org.eclipse.nebula.widgets.nattable.data.IDataProvider; +import org.eclipse.nebula.widgets.nattable.data.ListDataProvider; +import org.eclipse.nebula.widgets.nattable.edit.EditConfigAttributes; +import org.eclipse.nebula.widgets.nattable.extension.glazedlists.GlazedListsEventLayer; +import org.eclipse.nebula.widgets.nattable.grid.data.DefaultColumnHeaderDataProvider; +import org.eclipse.nebula.widgets.nattable.grid.data.DefaultCornerDataProvider; +import org.eclipse.nebula.widgets.nattable.grid.data.DefaultRowHeaderDataProvider; +import org.eclipse.nebula.widgets.nattable.grid.layer.ColumnHeaderLayer; +import org.eclipse.nebula.widgets.nattable.grid.layer.CornerLayer; +import org.eclipse.nebula.widgets.nattable.grid.layer.DefaultColumnHeaderDataLayer; +import org.eclipse.nebula.widgets.nattable.grid.layer.DefaultRowHeaderDataLayer; +import org.eclipse.nebula.widgets.nattable.grid.layer.GridLayer; +import org.eclipse.nebula.widgets.nattable.grid.layer.RowHeaderLayer; +import org.eclipse.nebula.widgets.nattable.layer.DataLayer; +import org.eclipse.nebula.widgets.nattable.layer.ILayer; +import org.eclipse.nebula.widgets.nattable.layer.cell.ColumnLabelAccumulator; +import org.eclipse.nebula.widgets.nattable.selection.SelectionLayer; +import org.eclipse.nebula.widgets.nattable.viewport.ViewportLayer; +import org.eclipse.swt.SWT; +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.widgets.Composite; + +/** + * Displays the information contained in a ListComponent as a Nattable. + * + * + * @author Jay Jay Billings, Kasper Gammeltoft + * + */ +public class ListComponentNattable { + + /** + * The Composite will act as a parent where the Nattable will be drawn. + * + */ + private Composite sectionClient; + + /** + * The ListComponent is the data input for the Nattable to use. + * + */ + private ListComponent list; + + + /** + * Constructor, needs the parent Composite and the List for data + * + * @param parent + * The Composite to be used as a parent Shell or View. + * @param listComponent + * The ListComponent to be used as list data for the Nattable + */ + public ListComponentNattable(Composite parent, ListComponent listComponent){ + sectionClient = parent; + list = listComponent; + createTable(); + } + + + /** + * This operation configures the NatTable used to render the ListComponent + * on the screen. + */ + private void createTable() { + + // Create the data layer of the table + IColumnPropertyAccessor accessor = new ListComponentColumnPropertyAccessor( + list); + IDataProvider dataProvider = new ListDataProvider(list, accessor); + DataLayer dataLayer = new DataLayer(dataProvider); + GlazedListsEventLayer eventLayer = new GlazedListsEventLayer(dataLayer, + list); + + // Create the selection and viewport layers of the table + SelectionLayer selectionLayer = new SelectionLayer(eventLayer); + ViewportLayer viewportLayer = new ViewportLayer(selectionLayer); + + // Get the column names + String[] columnNames = new String[list.getColumnCount()]; + for (int i = 0; i < list.getColumnCount(); i++) { + columnNames[i] = list.getColumnName(i); + } + + // Create the column header layer (column names) of the table + IDataProvider columnHeaderDataProvider = new DefaultColumnHeaderDataProvider( + columnNames); + DataLayer columnHeaderDataLayer = new DefaultColumnHeaderDataLayer( + columnHeaderDataProvider); + ILayer columnHeaderLayer = new ColumnHeaderLayer(columnHeaderDataLayer, + viewportLayer, selectionLayer); + // Turn the column labels on by default + columnHeaderDataLayer + .setConfigLabelAccumulator(new ColumnLabelAccumulator()); + + // Create the row header layer (row names) of the table + IDataProvider rowHeaderDataProvider = new DefaultRowHeaderDataProvider( + dataProvider); + DataLayer rowHeaderDataLayer = new DefaultRowHeaderDataLayer( + rowHeaderDataProvider); + ILayer rowHeaderLayer = new RowHeaderLayer(rowHeaderDataLayer, + viewportLayer, selectionLayer); + + // Create the corner layer of the table + IDataProvider cornerDataProvider = new DefaultCornerDataProvider( + columnHeaderDataProvider, rowHeaderDataProvider); + DataLayer cornerDataLayer = new DataLayer(cornerDataProvider); + ILayer cornerLayer = new CornerLayer(cornerDataLayer, rowHeaderLayer, + columnHeaderLayer); + + // Create the grid layer and the table + GridLayer gridLayer = new GridLayer(viewportLayer, columnHeaderLayer, + rowHeaderLayer, cornerLayer); + NatTable natTable = new NatTable(sectionClient, gridLayer, false); + ConfigRegistry configRegistry = new ConfigRegistry(); + natTable.setConfigRegistry(configRegistry); + // Set the default table style + natTable.addConfiguration(new DefaultNatTableStyleConfiguration()); + + // Make the table editable by updating the configuration rules + natTable.addConfiguration(new AbstractRegistryConfiguration() { + @Override + public void configureRegistry(IConfigRegistry configRegistry) { + configRegistry.registerConfigAttribute( + EditConfigAttributes.CELL_EDITABLE_RULE, + IEditableRule.ALWAYS_EDITABLE); + } + }); + + // Configure the table (lay it out) + natTable.configure(); + natTable.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, + 1)); + + return; + } + + + /** + * Sets a new list to be used for the table data. + * @param listComponent + * A ListComponent object for the Nattable's data. + */ + public void setList(ListComponent listComponent){ + list = listComponent; + } + + + /** + * Gets the ListComponent that this Nattable uses for data. + * @return + */ + public ListComponent getList(){ + return list; + } + + + /** + * Sets a new parent Composite used to draw the Nattable + * @param parent + * A Composite object + */ + public void setComposite(Composite parent){ + sectionClient = parent; + } + +} diff --git a/src/org.eclipse.ice.client.widgets/src/org/eclipse/ice/client/widgets/ListComponentSectionPage.java b/src/org.eclipse.ice.client.widgets/src/org/eclipse/ice/client/widgets/ListComponentSectionPage.java index 4ece46ba8..16293994e 100644 --- a/src/org.eclipse.ice.client.widgets/src/org/eclipse/ice/client/widgets/ListComponentSectionPage.java +++ b/src/org.eclipse.ice.client.widgets/src/org/eclipse/ice/client/widgets/ListComponentSectionPage.java @@ -138,7 +138,9 @@ public class ListComponentSectionPage extends ICEFormPage { true, 1, 1)); // Draw the table - configureTable(); + //configureTable(); + + ListComponentNattable table = new ListComponentNattable(sectionClient, list); // Create the Add/Delete buttons createAddDeleteButtons(); @@ -222,11 +224,16 @@ public class ListComponentSectionPage extends ICEFormPage { return; } + + + /** * This operation configures the NatTable used to render the ListComponent * on the screen. */ + + /* private void configureTable() { // Create the data layer of the table @@ -299,6 +306,7 @@ public class ListComponentSectionPage extends ICEFormPage { return; } + */ /** * This operation sets the ListComponent that should be used as input for -- GitLab From deb459c681638204b02332e2b83833dd0fbb9d56 Mon Sep 17 00:00:00 2001 From: Kasper Gammeltoft Date: Thu, 4 Jun 2015 11:44:13 -0400 Subject: [PATCH 02/18] Commit update --- features/org.eclipse.ice.feature/feature.xml | 288 ++++++++++++++++++ .../ice.product.launch | 2 +- .../data/userMatDB.xml | 20 ++ 3 files changed, 309 insertions(+), 1 deletion(-) diff --git a/features/org.eclipse.ice.feature/feature.xml b/features/org.eclipse.ice.feature/feature.xml index 8c4a9601c..7e034f197 100644 --- a/features/org.eclipse.ice.feature/feature.xml +++ b/features/org.eclipse.ice.feature/feature.xml @@ -2380,4 +2380,292 @@ Java and all Java-based trademarks are trademarks of Oracle Corporation in the U version="0.0.0" unpack="false"/> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/repository/org.eclipse.ice.repository/ice.product.launch b/repository/org.eclipse.ice.repository/ice.product.launch index acd7ab897..e674573dc 100644 --- a/repository/org.eclipse.ice.repository/ice.product.launch +++ b/repository/org.eclipse.ice.repository/ice.product.launch @@ -22,7 +22,7 @@ - + diff --git a/src/org.eclipse.ice.materials/data/userMatDB.xml b/src/org.eclipse.ice.materials/data/userMatDB.xml index 9454e9fb1..88219d29b 100644 --- a/src/org.eclipse.ice.materials/data/userMatDB.xml +++ b/src/org.eclipse.ice.materials/data/userMatDB.xml @@ -12,14 +12,30 @@ Abs xs 2.75 + + Mu_inc (A^-1) + 0.0 + Inc xs 0.16 + + Thickness (A) + 0.0 + + + Material ID + 0.0 + Dens (at/nm3) 51.0 + + Roughness (A) + 0.0 + M (amu) 69.72 @@ -28,6 +44,10 @@ Dens (g/cm3) 5.9 + + Scattering Length Density (A^-2) + 0.0 + Coh b 7.288 -- GitLab From 34b6c67d9930b9eba35841610ed21a69a16d9368 Mon Sep 17 00:00:00 2001 From: Kasper Gammeltoft Date: Fri, 5 Jun 2015 12:57:37 -0400 Subject: [PATCH 03/18] Implemented the Delete Button for the Reflectivity Model. Added getSelectedObjects to ListComponentNattable wich returns the selected rows for that table. Signed-off-by: Kasper Gammeltoft --- .../client/widgets/ListComponentNattable.java | 47 + .../widgets/ListComponentSectionPage.java | 45 +- .../data/userMatDB.xml | 8088 ++++++++--------- 3 files changed, 4131 insertions(+), 4049 deletions(-) diff --git a/src/org.eclipse.ice.client.widgets/src/org/eclipse/ice/client/widgets/ListComponentNattable.java b/src/org.eclipse.ice.client.widgets/src/org/eclipse/ice/client/widgets/ListComponentNattable.java index 08763237a..bfc0e3fde 100644 --- a/src/org.eclipse.ice.client.widgets/src/org/eclipse/ice/client/widgets/ListComponentNattable.java +++ b/src/org.eclipse.ice.client.widgets/src/org/eclipse/ice/client/widgets/ListComponentNattable.java @@ -1,6 +1,12 @@ package org.eclipse.ice.client.widgets; +import java.util.Iterator; + import org.eclipse.ice.datastructures.ICEObject.ListComponent; +import org.eclipse.jface.viewers.ISelectionChangedListener; +import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.jface.viewers.SelectionChangedEvent; +import org.eclipse.jface.viewers.StructuredSelection; import org.eclipse.nebula.widgets.nattable.NatTable; import org.eclipse.nebula.widgets.nattable.config.AbstractRegistryConfiguration; import org.eclipse.nebula.widgets.nattable.config.ConfigRegistry; @@ -9,6 +15,7 @@ import org.eclipse.nebula.widgets.nattable.config.IConfigRegistry; import org.eclipse.nebula.widgets.nattable.config.IEditableRule; import org.eclipse.nebula.widgets.nattable.data.IColumnPropertyAccessor; import org.eclipse.nebula.widgets.nattable.data.IDataProvider; +import org.eclipse.nebula.widgets.nattable.data.IRowDataProvider; import org.eclipse.nebula.widgets.nattable.data.ListDataProvider; import org.eclipse.nebula.widgets.nattable.edit.EditConfigAttributes; import org.eclipse.nebula.widgets.nattable.extension.glazedlists.GlazedListsEventLayer; @@ -24,6 +31,7 @@ import org.eclipse.nebula.widgets.nattable.grid.layer.RowHeaderLayer; import org.eclipse.nebula.widgets.nattable.layer.DataLayer; import org.eclipse.nebula.widgets.nattable.layer.ILayer; import org.eclipse.nebula.widgets.nattable.layer.cell.ColumnLabelAccumulator; +import org.eclipse.nebula.widgets.nattable.selection.RowSelectionProvider; import org.eclipse.nebula.widgets.nattable.selection.SelectionLayer; import org.eclipse.nebula.widgets.nattable.viewport.ViewportLayer; import org.eclipse.swt.SWT; @@ -51,6 +59,16 @@ public class ListComponentNattable { */ private ListComponent list; + /** + * Holds the selected list components. + */ + private ListComponent selectedList; + + /** + * The table to hold the list data. + */ + private NatTable table; + /** * Constructor, needs the parent Composite and the List for data @@ -63,6 +81,7 @@ public class ListComponentNattable { public ListComponentNattable(Composite parent, ListComponent listComponent){ sectionClient = parent; list = listComponent; + selectedList = new ListComponent(); createTable(); } @@ -140,11 +159,39 @@ public class ListComponentNattable { natTable.configure(); natTable.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1)); + + + table = natTable; + + + RowSelectionProvider selectionProvider = new RowSelectionProvider(selectionLayer, (IRowDataProvider)dataProvider, false); + + selectionProvider.addSelectionChangedListener(new ISelectionChangedListener(){ + @Override + public void selectionChanged(SelectionChangedEvent e) { + + + IStructuredSelection selection = (IStructuredSelection) e.getSelection(); + selectedList.clear(); + Iterator it = selection.iterator(); + while(it.hasNext()){ + selectedList.add(it.next()); + } + } + } + ); + return; } + public ListComponent getSelectedObjects(){ + return selectedList; + + } + + /** * Sets a new list to be used for the table data. * @param listComponent diff --git a/src/org.eclipse.ice.client.widgets/src/org/eclipse/ice/client/widgets/ListComponentSectionPage.java b/src/org.eclipse.ice.client.widgets/src/org/eclipse/ice/client/widgets/ListComponentSectionPage.java index 16293994e..a4cf137eb 100644 --- a/src/org.eclipse.ice.client.widgets/src/org/eclipse/ice/client/widgets/ListComponentSectionPage.java +++ b/src/org.eclipse.ice.client.widgets/src/org/eclipse/ice/client/widgets/ListComponentSectionPage.java @@ -82,8 +82,11 @@ public class ListComponentSectionPage extends ICEFormPage { * The composite that will act as the client of the section where everything * is drawn. */ - Composite sectionClient; + private Composite sectionClient; + private ListComponentNattable table; + + /** * The Constructor * @@ -140,8 +143,8 @@ public class ListComponentSectionPage extends ICEFormPage { // Draw the table //configureTable(); - ListComponentNattable table = new ListComponentNattable(sectionClient, list); - + table = new ListComponentNattable(sectionClient, list); + // Create the Add/Delete buttons createAddDeleteButtons(); @@ -221,6 +224,42 @@ public class ListComponentSectionPage extends ICEFormPage { // from the list. Button deleteMaterialButton = new Button(listButtonComposite, SWT.PUSH); deleteMaterialButton.setText("Delete"); + deleteMaterialButton.addSelectionListener(new SelectionListener(){ + + @Override + public void widgetDefaultSelected(SelectionEvent arg0) { + + } + + @Override + public void widgetSelected(SelectionEvent arg0) { + //System.out.println("delete pressed"); + //currently testing to see if the delete button could work, deletes the last material added rather than + //the currently selected material. + + //checks if list has something to delete + if(list.size()>0){ + ListComponent selected = table.getSelectedObjects(); + if(selected.size()>0){ + //gets the last index in the list + int index = list.size()-1; + + //removes that material from the list + //lock the list before removing the selection + list.getReadWriteLock().writeLock().lock(); + try { + for(Object o: selected){ + list.remove(o); + } + } finally { + // Unlock it + list.getReadWriteLock().writeLock().unlock(); + } + } + } + } + + }); return; } diff --git a/src/org.eclipse.ice.materials/data/userMatDB.xml b/src/org.eclipse.ice.materials/data/userMatDB.xml index 88219d29b..a02e54f7c 100644 --- a/src/org.eclipse.ice.materials/data/userMatDB.xml +++ b/src/org.eclipse.ice.materials/data/userMatDB.xml @@ -4,53 +4,33 @@ Ga 1 - - mmabs/l (Å-2) - 1.32E14 - - - Abs xs - 2.75 - - - Mu_inc (A^-1) - 0.0 - Inc xs 0.16 - Thickness (A) - 0.0 - - - Material ID - 0.0 - - - Dens (at/nm3) - 51.0 - - - Roughness (A) - 0.0 + mmabs/l (Å-2) + 1.32E14 M (amu) 69.72 + + Coh b + 7.288 + Dens (g/cm3) 5.9 - Scattering Length Density (A^-2) - 0.0 + Abs xs + 2.75 - Coh b - 7.288 + Dens (at/nm3) + 51.0 mminc (Å-1) @@ -62,33 +42,33 @@ 188Os 1 - - mmabs/l (Å-2) - 8.37E13 - - - Abs xs - 4.7 - Inc xs 0.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 8.37E13 M (amu) 188.0 + + Coh b + 7.6 + Dens (g/cm3) 0.0 - Coh b - 7.6 + Abs xs + 4.7 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -100,33 +80,33 @@ 137Ba 1 - - mmabs/l (Å-2) - 8.8E13 - - - Abs xs - 3.6 - Inc xs 0.5 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 8.8E13 M (amu) 137.0 + + Coh b + 6.83 + Dens (g/cm3) 0.0 - Coh b - 6.83 + Abs xs + 3.6 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -138,33 +118,33 @@ 22Ne 1 - - mmabs/l (Å-2) - 7.0E12 - - - Abs xs - 0.046 - Inc xs 0.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 7.0E12 M (amu) 22.0 + + Coh b + 3.87 + Dens (g/cm3) 0.0 - Coh b - 3.87 + Abs xs + 0.046 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -176,33 +156,33 @@ 184Os 1 - - mmabs/l (Å-2) - 5.46E16 - - - Abs xs - 3000.0 - Inc xs 0.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 5.46E16 M (amu) 184.0 + + Coh b + 10.0 + Dens (g/cm3) 0.0 - Coh b - 10.0 + Abs xs + 3000.0 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -214,33 +194,33 @@ Fe 1 - - mmabs/l (Å-2) - 1.53E14 - - - Abs xs - 2.56 - Inc xs 0.4 - Dens (at/nm3) - 84.76 + mmabs/l (Å-2) + 1.53E14 M (amu) 55.847 + + Coh b + 9.45 + Dens (g/cm3) 7.86 - Coh b - 9.45 + Abs xs + 2.56 + + + Dens (at/nm3) + 84.76 mminc (Å-1) @@ -252,33 +232,33 @@ 29Si 1 - - mmabs/l (Å-2) - 1.17E13 - - - Abs xs - 0.101 - Inc xs 0.001 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 1.17E13 M (amu) 29.0 + + Coh b + 4.7 + Dens (g/cm3) 0.0 - Coh b - 4.7 + Abs xs + 0.101 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -290,33 +270,33 @@ 26Mg 1 - - mmabs/l (Å-2) - 4.92E12 - - - Abs xs - 0.0382 - Inc xs 0.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 4.92E12 M (amu) 26.0 + + Coh b + 4.89 + Dens (g/cm3) 0.0 - Coh b - 4.89 + Abs xs + 0.0382 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -328,33 +308,33 @@ 3He 1 - - mmabs/l (Å-2) - 5.95E18 - - - Abs xs - 5333.0 - Inc xs 1.6 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 5.95E18 M (amu) 3.0 + + Coh b + 5.74 + Dens (g/cm3) 0.0 - Coh b - 5.74 + Abs xs + 5333.0 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -366,33 +346,33 @@ 130Te 1 - - mmabs/l (Å-2) - 7.47E12 - - - Abs xs - 0.29 - Inc xs 0.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 7.47E12 M (amu) 130.0 + + Coh b + 6.02 + Dens (g/cm3) 0.0 - Coh b - 6.02 + Abs xs + 0.29 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -404,33 +384,33 @@ Eu 1 - - mmabs/l (Å-2) - 9.98E16 - - - Abs xs - 4530.0 - Inc xs 2.5 - Dens (at/nm3) - 20.77 + mmabs/l (Å-2) + 9.98E16 M (amu) 151.96 + + Coh b + 7.22 + Dens (g/cm3) 5.24 - Coh b - 7.22 + Abs xs + 4530.0 + + + Dens (at/nm3) + 20.77 mminc (Å-1) @@ -442,33 +422,33 @@ 85Rb 1 - - mmabs/l (Å-2) - 1.89E13 - - - Abs xs - 0.48 - Inc xs 0.5 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 1.89E13 M (amu) 85.0 + + Coh b + 7.03 + Dens (g/cm3) 0.0 - Coh b - 7.03 + Abs xs + 0.48 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -480,33 +460,37 @@ 160Gd 1 - - mmabs/l (Å-2) - 1.61E13 - - - Abs xs - 0.77 - Inc xs 0.0 - Dens (at/nm3) + Material ID 0.0 + + mmabs/l (Å-2) + 1.61E13 + M (amu) 160.0 + + Coh b + 9.15 + Dens (g/cm3) 0.0 - Coh b - 9.15 + Abs xs + 0.77 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -518,33 +502,33 @@ Er 1 - - mmabs/l (Å-2) - 3.18E15 - - - Abs xs - 159.0 - Inc xs 1.1 - Dens (at/nm3) - 32.42 + mmabs/l (Å-2) + 3.18E15 M (amu) 167.28 + + Coh b + 7.79 + Dens (g/cm3) 9.01 - Coh b - 7.79 + Abs xs + 159.0 + + + Dens (at/nm3) + 32.42 mminc (Å-1) @@ -557,32 +541,44 @@ 1 - mmabs/l (Å-2) - 1.17E11 + Inc xs + 0.0 - Abs xs - 0.003 + Roughness (A) + 0.0 - Inc xs + Material ID 0.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 1.17E11 M (amu) 86.0 + + Coh b + 8.1 + + + Thickness (A) + 0.0 + Dens (g/cm3) 0.0 - Coh b - 8.1 + Abs xs + 0.003 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -594,33 +590,33 @@ 109Ag 1 - - mmabs/l (Å-2) - 2.8E15 - - - Abs xs - 91.0 - Inc xs 0.32 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 2.8E15 M (amu) 109.0 + + Coh b + 4.165 + Dens (g/cm3) 0.0 - Coh b - 4.165 + Abs xs + 91.0 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -632,33 +628,33 @@ 46Ti 1 - - mmabs/l (Å-2) - 4.29E13 - - - Abs xs - 0.59 - Inc xs 0.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 4.29E13 M (amu) 46.0 + + Coh b + 4.93 + Dens (g/cm3) 0.0 - Coh b - 4.93 + Abs xs + 0.59 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -670,33 +666,33 @@ 76Ge 1 - - mmabs/l (Å-2) - 7.05E12 - - - Abs xs - 0.16 - Inc xs 0.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 7.05E12 M (amu) 76.0 + + Coh b + 8.2 + Dens (g/cm3) 0.0 - Coh b - 8.2 + Abs xs + 0.16 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -708,33 +704,33 @@ Dy 1 - - mmabs/l (Å-2) - 2.05E16 - - - Abs xs - 994.0 - Inc xs 54.4 - Dens (at/nm3) - 31.69 + mmabs/l (Å-2) + 2.05E16 M (amu) 162.5 + + Coh b + 16.9 + Dens (g/cm3) 8.55 - Coh b - 16.9 + Abs xs + 994.0 + + + Dens (at/nm3) + 31.69 mminc (Å-1) @@ -746,33 +742,33 @@ 78Se 1 - - mmabs/l (Å-2) - 1.85E13 - - - Abs xs - 0.43 - Inc xs 0.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 1.85E13 M (amu) 78.0 + + Coh b + 8.24 + Dens (g/cm3) 0.0 - Coh b - 8.24 + Abs xs + 0.43 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -784,33 +780,33 @@ 72Ge 1 - - mmabs/l (Å-2) - 3.72E13 - - - Abs xs - 0.8 - Inc xs 0.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 3.72E13 M (amu) 72.0 + + Coh b + 8.51 + Dens (g/cm3) 0.0 - Coh b - 8.51 + Abs xs + 0.8 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -822,33 +818,33 @@ 168Er 1 - - mmabs/l (Å-2) - 5.46E13 - - - Abs xs - 2.74 - Inc xs 0.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 5.46E13 M (amu) 168.0 + + Coh b + 7.4 + Dens (g/cm3) 0.0 - Coh b - 7.4 + Abs xs + 2.74 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -860,33 +856,33 @@ 238Pu 1 - - mmabs/l (Å-2) - 7.85E15 - - - Abs xs - 558.0 - Inc xs 0.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 7.85E15 M (amu) 238.0 + + Coh b + 14.1 + Dens (g/cm3) 0.0 - Coh b - 14.1 + Abs xs + 558.0 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -898,33 +894,33 @@ 74Se 1 - - mmabs/l (Å-2) - 2.34E15 - - - Abs xs - 51.8 - Inc xs 0.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 2.34E15 M (amu) 74.0 + + Coh b + 0.8 + Dens (g/cm3) 0.0 - Coh b - 0.8 + Abs xs + 51.8 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -936,33 +932,33 @@ 139La 1 - - mmabs/l (Å-2) - 2.15E14 - - - Abs xs - 8.93 - Inc xs 1.13 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 2.15E14 M (amu) 139.0 + + Coh b + 8.24 + Dens (g/cm3) 0.0 - Coh b - 8.24 + Abs xs + 8.93 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -974,33 +970,33 @@ 164Er 1 - - mmabs/l (Å-2) - 2.65E14 - - - Abs xs - 13.0 - Inc xs 0.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 2.65E14 M (amu) 164.0 + + Coh b + 8.2 + Dens (g/cm3) 0.0 - Coh b - 8.2 + Abs xs + 13.0 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -1012,33 +1008,33 @@ 94Zr 1 - - mmabs/l (Å-2) - 1.78E12 - - - Abs xs - 0.0499 - Inc xs 0.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 1.78E12 M (amu) 94.0 + + Coh b + 8.2 + Dens (g/cm3) 0.0 - Coh b - 8.2 + Abs xs + 0.0499 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -1050,33 +1046,33 @@ 198Pt 1 - - mmabs/l (Å-2) - 6.19E13 - - - Abs xs - 3.66 - Inc xs 0.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 6.19E13 M (amu) 198.0 + + Coh b + 7.8 + Dens (g/cm3) 0.0 - Coh b - 7.8 + Abs xs + 3.66 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -1088,33 +1084,33 @@ 157Gd 1 - - mmabs/l (Å-2) - 5.52E18 - - - Abs xs - 259000.0 - Inc xs 394.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 5.52E18 M (amu) 157.0 + + Coh b + -1.14 + Dens (g/cm3) 0.0 - Coh b - -1.14 + Abs xs + 259000.0 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -1126,33 +1122,33 @@ 6Li 1 - - mmabs/l (Å-2) - 5.25E17 - - - Abs xs - 940.0 - Inc xs 0.46 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 5.25E17 M (amu) 6.0 + + Coh b + 2.0 + Dens (g/cm3) 0.0 - Coh b - 2.0 + Abs xs + 940.0 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -1164,33 +1160,33 @@ 90Zr 1 - - mmabs/l (Å-2) - 4.09E11 - - - Abs xs - 0.011 - Inc xs 0.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 4.09E11 M (amu) 90.0 + + Coh b + 6.4 + Dens (g/cm3) 0.0 - Coh b - 6.4 + Abs xs + 0.011 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -1202,33 +1198,33 @@ Cu 1 - - mmabs/l (Å-2) - 1.99E14 - - - Abs xs - 3.78 - Inc xs 0.55 - Dens (at/nm3) - 84.53 + mmabs/l (Å-2) + 1.99E14 M (amu) 63.5406 + + Coh b + 7.718 + Dens (g/cm3) 8.92 - Coh b - 7.718 + Abs xs + 3.78 + + + Dens (at/nm3) + 84.53 mminc (Å-1) @@ -1240,33 +1236,33 @@ 123Te 1 - - mmabs/l (Å-2) - 1.14E16 - - - Abs xs - 418.0 - Inc xs 0.52 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 1.14E16 M (amu) 123.0 + + Coh b + -0.05 + Dens (g/cm3) 0.0 - Coh b - -0.05 + Abs xs + 418.0 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -1278,33 +1274,33 @@ Cs 1 - - mmabs/l (Å-2) - 7.31E14 - - - Abs xs - 29.0 - Inc xs 0.21 - Dens (at/nm3) - 8.52 + mmabs/l (Å-2) + 7.31E14 M (amu) 132.905 + + Coh b + 5.42 + Dens (g/cm3) 1.88 - Coh b - 5.42 + Abs xs + 29.0 + + + Dens (at/nm3) + 8.52 mminc (Å-1) @@ -1316,33 +1312,33 @@ 194Pt 1 - - mmabs/l (Å-2) - 2.49E13 - - - Abs xs - 1.44 - Inc xs 0.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 2.49E13 M (amu) 194.0 + + Coh b + 10.55 + Dens (g/cm3) 0.0 - Coh b - 10.55 + Abs xs + 1.44 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -1354,33 +1350,33 @@ Cr 1 - - mmabs/l (Å-2) - 1.96E14 - - - Abs xs - 3.05 - Inc xs 1.83 - Dens (at/nm3) - 83.39 + mmabs/l (Å-2) + 1.96E14 M (amu) 51.996 + + Coh b + 3.635 + Dens (g/cm3) 7.2 - Coh b - 3.635 + Abs xs + 3.05 + + + Dens (at/nm3) + 83.39 mminc (Å-1) @@ -1392,33 +1388,33 @@ 164Dy 1 - - mmabs/l (Å-2) - 5.8E16 - - - Abs xs - 2840.0 - Inc xs 0.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 5.8E16 M (amu) 164.0 + + Coh b + 49.4 + Dens (g/cm3) 0.0 - Coh b - 49.4 + Abs xs + 2840.0 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -1430,33 +1426,33 @@ 64Ni 1 - - mmabs/l (Å-2) - 7.95E13 - - - Abs xs - 1.52 - Inc xs 0.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 7.95E13 M (amu) 64.0 + + Coh b + -0.37 + Dens (g/cm3) 0.0 - Coh b - -0.37 + Abs xs + 1.52 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -1468,33 +1464,33 @@ Co 1 - - mmabs/l (Å-2) - 2.11E15 - - - Abs xs - 37.18 - Inc xs 4.8 - Dens (at/nm3) - 90.94 + mmabs/l (Å-2) + 2.11E15 M (amu) 58.9332 + + Coh b + 2.49 + Dens (g/cm3) 8.9 - Coh b - 2.49 + Abs xs + 37.18 + + + Dens (at/nm3) + 90.94 mminc (Å-1) @@ -1506,33 +1502,33 @@ 66Zn 1 - - mmabs/l (Å-2) - 3.15E13 - - - Abs xs - 0.62 - Inc xs 0.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 3.15E13 M (amu) 66.0 + + Coh b + 5.97 + Dens (g/cm3) 0.0 - Coh b - 5.97 + Abs xs + 0.62 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -1544,33 +1540,33 @@ 96Mo 1 - - mmabs/l (Å-2) - 1.74E13 - - - Abs xs - 0.5 - Inc xs 0.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 1.74E13 M (amu) 96.0 + + Coh b + 6.2 + Dens (g/cm3) 0.0 - Coh b - 6.2 + Abs xs + 0.5 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -1582,33 +1578,33 @@ Cl 1 - - mmabs/l (Å-2) - 3.16E15 - - - Abs xs - 33.5 - Inc xs 5.3 - Dens (at/nm3) - 0.05 + mmabs/l (Å-2) + 3.16E15 M (amu) 35.453 + + Coh b + 9.577 + Dens (g/cm3) 0.0 - Coh b - 9.577 + Abs xs + 33.5 + + + Dens (at/nm3) + 0.05 mminc (Å-1) @@ -1620,33 +1616,33 @@ 178Hf 1 - - mmabs/l (Å-2) - 1.58E15 - - - Abs xs - 84.0 - Inc xs 0.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 1.58E15 M (amu) 178.0 + + Coh b + 5.9 + Dens (g/cm3) 0.0 - Coh b - 5.9 + Abs xs + 84.0 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -1658,33 +1654,33 @@ 190Pt 1 - - mmabs/l (Å-2) - 2.68E15 - - - Abs xs - 152.0 - Inc xs 0.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 2.68E15 M (amu) 190.0 + + Coh b + 9.0 + Dens (g/cm3) 0.0 - Coh b - 9.0 + Abs xs + 152.0 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -1696,33 +1692,33 @@ 160Dy 1 - - mmabs/l (Å-2) - 1.17E15 - - - Abs xs - 56.0 - Inc xs 0.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 1.17E15 M (amu) 160.0 + + Coh b + 6.7 + Dens (g/cm3) 0.0 - Coh b - 6.7 + Abs xs + 56.0 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -1734,33 +1730,33 @@ 60Ni 1 - - mmabs/l (Å-2) - 1.62E14 - - - Abs xs - 2.9 - Inc xs 0.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 1.62E14 M (amu) 60.0 + + Coh b + 2.8 + Dens (g/cm3) 0.0 - Coh b - 2.8 + Abs xs + 2.9 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -1772,33 +1768,33 @@ Ce 1 - - mmabs/l (Å-2) - 1.51E13 - - - Abs xs - 0.63 - Inc xs 0.001 - Dens (at/nm3) - 28.62 + mmabs/l (Å-2) + 1.51E13 M (amu) 140.12 + + Coh b + 4.84 + Dens (g/cm3) 6.66 - Coh b - 4.84 + Abs xs + 0.63 + + + Dens (at/nm3) + 28.62 mminc (Å-1) @@ -1810,33 +1806,33 @@ 206Pb 1 - - mmabs/l (Å-2) - 4.88E11 - - - Abs xs - 0.03 - Inc xs 0.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 4.88E11 M (amu) 206.0 + + Coh b + 9.22 + Dens (g/cm3) 0.0 - Coh b - 9.22 + Abs xs + 0.03 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -1848,33 +1844,33 @@ Cd 1 - - mmabs/l (Å-2) - 7.51E16 - - - Abs xs - 2520.0 - Inc xs 3.46 - Dens (at/nm3) - 46.3 + mmabs/l (Å-2) + 7.51E16 M (amu) 112.41 + + Coh b + 4.87 + Dens (g/cm3) 8.64 - Coh b - 4.87 + Abs xs + 2520.0 + + + Dens (at/nm3) + 46.3 mminc (Å-1) @@ -1886,33 +1882,33 @@ 92Mo 1 - - mmabs/l (Å-2) - 6.91E11 - - - Abs xs - 0.019 - Inc xs 0.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 6.91E11 M (amu) 92.0 + + Coh b + 6.91 + Dens (g/cm3) 0.0 - Coh b - 6.91 + Abs xs + 0.019 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -1924,33 +1920,33 @@ 187Re 1 - - mmabs/l (Å-2) - 1.37E15 - - - Abs xs - 76.4 - Inc xs 1.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 1.37E15 M (amu) 187.0 + + Coh b + 9.3 + Dens (g/cm3) 0.0 - Coh b - 9.3 + Abs xs + 76.4 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -1962,33 +1958,33 @@ Ca 1 - - mmabs/l (Å-2) - 3.59E13 - - - Abs xs - 0.43 - Inc xs 0.05 - Dens (at/nm3) - 23.14 + mmabs/l (Å-2) + 3.59E13 M (amu) 40.08 + + Coh b + 4.7 + Dens (g/cm3) 1.54 - Coh b - 4.7 + Abs xs + 0.43 + + + Dens (at/nm3) + 23.14 mminc (Å-1) @@ -2000,33 +1996,33 @@ 174Hf 1 - - mmabs/l (Å-2) - 1.08E16 - - - Abs xs - 561.0 - Inc xs 0.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 1.08E16 M (amu) 174.0 + + Coh b + 10.9 + Dens (g/cm3) 0.0 - Coh b - 10.9 + Abs xs + 561.0 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -2038,33 +2034,33 @@ 38Ar 1 - - mmabs/l (Å-2) - 7.05E13 - - - Abs xs - 0.8 - Inc xs 0.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 7.05E13 M (amu) 38.0 + + Coh b + 3.5 + Dens (g/cm3) 0.0 - Coh b - 3.5 + Abs xs + 0.8 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -2076,33 +2072,33 @@ 69Ga 1 - - mmabs/l (Å-2) - 1.06E14 - - - Abs xs - 2.18 - Inc xs 0.091 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 1.06E14 M (amu) 69.0 + + Coh b + 7.88 + Dens (g/cm3) 0.0 - Coh b - 7.88 + Abs xs + 2.18 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -2114,33 +2110,33 @@ 111Cd 1 - - mmabs/l (Å-2) - 7.24E14 - - - Abs xs - 24.0 - Inc xs 0.3 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 7.24E14 M (amu) 111.0 + + Coh b + 6.5 + Dens (g/cm3) 0.0 - Coh b - 6.5 + Abs xs + 24.0 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -2152,33 +2148,33 @@ Br 1 - - mmabs/l (Å-2) - 2.89E14 - - - Abs xs - 6.9 - Inc xs 0.1 - Dens (at/nm3) - 0.02 + mmabs/l (Å-2) + 2.89E14 M (amu) 79.904 + + Coh b + 6.795 + Dens (g/cm3) 0.0 - Coh b - 6.795 + Abs xs + 6.9 + + + Dens (at/nm3) + 0.02 mminc (Å-1) @@ -2190,33 +2186,33 @@ 123Sb 1 - - mmabs/l (Å-2) - 1.03E14 - - - Abs xs - 3.8 - Inc xs 0.001 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 1.03E14 M (amu) 123.0 + + Coh b + 5.38 + Dens (g/cm3) 0.0 - Coh b - 5.38 + Abs xs + 3.8 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -2228,33 +2224,33 @@ Bi 1 - - mmabs/l (Å-2) - 5.42E11 - - - Abs xs - 0.0338 - Inc xs 0.0084 - Dens (at/nm3) - 28.24 + mmabs/l (Å-2) + 5.42E11 M (amu) 208.98 + + Coh b + 8.532 + Dens (g/cm3) 9.8 - Coh b - 8.532 + Abs xs + 0.0338 + + + Dens (at/nm3) + 28.24 mminc (Å-1) @@ -2266,33 +2262,33 @@ 145Nd 1 - - mmabs/l (Å-2) - 9.7E14 - - - Abs xs - 42.0 - Inc xs 5.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 9.7E14 M (amu) 145.0 + + Coh b + 14.0 + Dens (g/cm3) 0.0 - Coh b - 14.0 + Abs xs + 42.0 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -2304,33 +2300,33 @@ 190Os 1 - - mmabs/l (Å-2) - 2.31E14 - - - Abs xs - 13.1 - Inc xs 0.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 2.31E14 M (amu) 190.0 + + Coh b + 11.0 + Dens (g/cm3) 0.0 - Coh b - 11.0 + Abs xs + 13.1 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -2342,33 +2338,33 @@ Be 1 - - mmabs/l (Å-2) - 2.82E12 - - - Abs xs - 0.0076 - Inc xs 0.0018 - Dens (at/nm3) - 123.62 + mmabs/l (Å-2) + 2.82E12 M (amu) 9.0122 + + Coh b + 7.79 + Dens (g/cm3) 1.85 - Coh b - 7.79 + Abs xs + 0.0076 + + + Dens (at/nm3) + 123.62 mminc (Å-1) @@ -2380,33 +2376,33 @@ 153Eu 1 - - mmabs/l (Å-2) - 6.83E15 - - - Abs xs - 312.0 - Inc xs 1.3 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 6.83E15 M (amu) 153.0 + + Coh b + 8.22 + Dens (g/cm3) 0.0 - Coh b - 8.22 + Abs xs + 312.0 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -2418,33 +2414,33 @@ Ba 1 - - mmabs/l (Å-2) - 2.68E13 - - - Abs xs - 1.1 - Inc xs 0.15 - Dens (at/nm3) - 15.35 + mmabs/l (Å-2) + 2.68E13 M (amu) 137.33 + + Coh b + 5.07 + Dens (g/cm3) 3.5 - Coh b - 5.07 + Abs xs + 1.1 + + + Dens (at/nm3) + 15.35 mminc (Å-1) @@ -2456,33 +2452,33 @@ Zr 1 - - mmabs/l (Å-2) - 6.79E12 - - - Abs xs - 0.185 - Inc xs 0.02 - Dens (at/nm3) - 42.85 + mmabs/l (Å-2) + 6.79E12 M (amu) 91.22 + + Coh b + 7.16 + Dens (g/cm3) 6.49 - Coh b - 7.16 + Abs xs + 0.185 + + + Dens (at/nm3) + 42.85 mminc (Å-1) @@ -2494,33 +2490,33 @@ Zn 1 - - mmabs/l (Å-2) - 5.68E13 - - - Abs xs - 1.11 - Inc xs 0.077 - Dens (at/nm3) - 65.77 + mmabs/l (Å-2) + 5.68E13 M (amu) 65.38 + + Coh b + 5.68 + Dens (g/cm3) 7.14 - Coh b - 5.68 + Abs xs + 1.11 + + + Dens (at/nm3) + 65.77 mminc (Å-1) @@ -2532,33 +2528,33 @@ 199Hg 1 - - mmabs/l (Å-2) - 3.62E16 - - - Abs xs - 2150.0 - Inc xs 30.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 3.62E16 M (amu) 199.0 + + Coh b + 16.9 + Dens (g/cm3) 0.0 - Coh b - 16.9 + Abs xs + 2150.0 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -2570,33 +2566,33 @@ Au 1 - - mmabs/l (Å-2) - 1.68E15 - - - Abs xs - 98.65 - Inc xs 0.43 - Dens (at/nm3) - 57.72 + mmabs/l (Å-2) + 1.68E15 M (amu) 196.97 + + Coh b + 7.63 + Dens (g/cm3) 18.88 - Coh b - 7.63 + Abs xs + 98.65 + + + Dens (at/nm3) + 57.72 mminc (Å-1) @@ -2608,33 +2604,33 @@ As 1 - - mmabs/l (Å-2) - 2.01E14 - - - Abs xs - 4.5 - Inc xs 0.06 - Dens (at/nm3) - 46.03 + mmabs/l (Å-2) + 2.01E14 M (amu) 74.9216 + + Coh b + 6.58 + Dens (g/cm3) 5.73 - Coh b - 6.58 + Abs xs + 4.5 + + + Dens (at/nm3) + 46.03 mminc (Å-1) @@ -2646,33 +2642,33 @@ 148Sm 1 - - mmabs/l (Å-2) - 5.43E13 - - - Abs xs - 2.4 - Inc xs 0.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 5.43E13 M (amu) 148.0 + + Coh b + -3.0 + Dens (g/cm3) 0.0 - Coh b - -3.0 + Abs xs + 2.4 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -2684,33 +2680,33 @@ Ar 1 - - mmabs/l (Å-2) - 5.66E13 - - - Abs xs - 0.675 - Inc xs 0.225 - Dens (at/nm3) - 0.03 + mmabs/l (Å-2) + 5.66E13 M (amu) 39.948 + + Coh b + 1.909 + Dens (g/cm3) 0.0 - Coh b - 1.909 + Abs xs + 0.675 + + + Dens (at/nm3) + 0.03 mminc (Å-1) @@ -2722,33 +2718,33 @@ 106Pd 1 - - mmabs/l (Å-2) - 9.6E12 - - - Abs xs - 0.304 - Inc xs 0.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 9.6E12 M (amu) 106.0 + + Coh b + 6.4 + Dens (g/cm3) 0.0 - Coh b - 6.4 + Abs xs + 0.304 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -2760,33 +2756,33 @@ 136Ce 1 - - mmabs/l (Å-2) - 1.8E14 - - - Abs xs - 7.3 - Inc xs 0.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 1.8E14 M (amu) 136.0 + + Coh b + 5.8 + Dens (g/cm3) 0.0 - Coh b - 5.8 + Abs xs + 7.3 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -2798,33 +2794,33 @@ Am 1 - - mmabs/l (Å-2) - 1.04E15 - - - Abs xs - 75.3 - Inc xs 0.3 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 1.04E15 M (amu) 243.0 + + Coh b + 8.3 + Dens (g/cm3) 0.0 - Coh b - 8.3 + Abs xs + 75.3 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -2836,33 +2832,33 @@ Al 1 - - mmabs/l (Å-2) - 2.87E13 - - - Abs xs - 0.231 - Inc xs 0.0082 - Dens (at/nm3) - 60.31 + mmabs/l (Å-2) + 2.87E13 M (amu) 26.9815 + + Coh b + 3.449 + Dens (g/cm3) 2.7 - Coh b - 3.449 + Abs xs + 0.231 + + + Dens (at/nm3) + 60.31 mminc (Å-1) @@ -2874,33 +2870,33 @@ 144Sm 1 - - mmabs/l (Å-2) - 1.63E13 - - - Abs xs - 0.7 - Inc xs 0.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 1.63E13 M (amu) 144.0 + + Coh b + -3.0 + Dens (g/cm3) 0.0 - Coh b - -3.0 + Abs xs + 0.7 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -2912,33 +2908,33 @@ Ag 1 - - mmabs/l (Å-2) - 1.96E15 - - - Abs xs - 63.3 - Inc xs 0.58 - Dens (at/nm3) - 58.62 + mmabs/l (Å-2) + 1.96E15 M (amu) 107.868 + + Coh b + 5.922 + Dens (g/cm3) 10.5 - Coh b - 5.922 + Abs xs + 63.3 + + + Dens (at/nm3) + 58.62 mminc (Å-1) @@ -2950,33 +2946,33 @@ 102Pd 1 - - mmabs/l (Å-2) - 1.12E14 - - - Abs xs - 3.4 - Inc xs 0.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 1.12E14 M (amu) 102.0 + + Coh b + 7.7 + Dens (g/cm3) 0.0 - Coh b - 7.7 + Abs xs + 3.4 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -2988,33 +2984,33 @@ 205Tl 1 - - mmabs/l (Å-2) - 1.7E12 - - - Abs xs - 0.104 - Inc xs 0.007 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 1.7E12 M (amu) 205.0 + + Coh b + 9.52 + Dens (g/cm3) 0.0 - Coh b - 9.52 + Abs xs + 0.104 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -3026,33 +3022,33 @@ 88Sr 1 - - mmabs/l (Å-2) - 2.21E12 - - - Abs xs - 0.058 - Inc xs 0.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 2.21E12 M (amu) 88.0 + + Coh b + 7.15 + Dens (g/cm3) 0.0 - Coh b - 7.15 + Abs xs + 0.058 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -3064,33 +3060,33 @@ 18O 1 - - mmabs/l (Å-2) - 2.98E10 - - - Abs xs - 1.6E-4 - Inc xs 0.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 2.98E10 M (amu) 18.0 + + Coh b + 5.84 + Dens (g/cm3) 0.0 - Coh b - 5.84 + Abs xs + 1.6E-4 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -3102,33 +3098,33 @@ 171Yb 1 - - mmabs/l (Å-2) - 9.52E14 - - - Abs xs - 48.6 - Inc xs 3.9 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 9.52E14 M (amu) 171.0 + + Coh b + 9.66 + Dens (g/cm3) 0.0 - Coh b - 9.66 + Abs xs + 48.6 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -3140,33 +3136,33 @@ 108Cd 1 - - mmabs/l (Å-2) - 3.41E13 - - - Abs xs - 1.1 - Inc xs 0.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 3.41E13 M (amu) 108.0 + + Coh b + 5.4 + Dens (g/cm3) 0.0 - Coh b - 5.4 + Abs xs + 1.1 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -3178,33 +3174,33 @@ 84Sr 1 - - mmabs/l (Å-2) - 3.47E13 - - - Abs xs - 0.87 - Inc xs 0.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 3.47E13 M (amu) 84.0 + + Coh b + 7.0 + Dens (g/cm3) 0.0 - Coh b - 7.0 + Abs xs + 0.87 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -3216,33 +3212,33 @@ 116Sn 1 - - mmabs/l (Å-2) - 4.04E12 - - - Abs xs - 0.14 - Inc xs 0.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 4.04E12 M (amu) 116.0 + + Coh b + 5.93 + Dens (g/cm3) 0.0 - Coh b - 5.93 + Abs xs + 0.14 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -3254,33 +3250,33 @@ 112Sn 1 - - mmabs/l (Å-2) - 2.99E13 - - - Abs xs - 1.0 - Inc xs 0.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 2.99E13 M (amu) 112.0 + + Coh b + 6.0 + Dens (g/cm3) 0.0 - Coh b - 6.0 + Abs xs + 1.0 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -3292,33 +3288,33 @@ 187Os 1 - - mmabs/l (Å-2) - 5.73E15 - - - Abs xs - 320.0 - Inc xs 0.3 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 5.73E15 M (amu) 187.0 + + Coh b + 10.0 + Dens (g/cm3) 0.0 - Coh b - 10.0 + Abs xs + 320.0 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -3330,33 +3326,33 @@ 48Ca 1 - - mmabs/l (Å-2) - 7.6E13 - - - Abs xs - 1.09 - Inc xs 0.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 7.6E13 M (amu) 48.0 + + Coh b + 0.39 + Dens (g/cm3) 0.0 - Coh b - 0.39 + Abs xs + 1.09 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -3368,33 +3364,33 @@ 136Ba 1 - - mmabs/l (Å-2) - 1.67E13 - - - Abs xs - 0.68 - Inc xs 0.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 1.67E13 M (amu) 136.0 + + Coh b + 4.91 + Dens (g/cm3) 0.0 - Coh b - 4.91 + Abs xs + 0.68 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -3406,33 +3402,33 @@ Yb 1 - - mmabs/l (Å-2) - 6.73E14 - - - Abs xs - 34.8 - Inc xs 4.0 - Dens (at/nm3) - 24.24 + mmabs/l (Å-2) + 6.73E14 M (amu) 173.04 + + Coh b + 12.43 + Dens (g/cm3) 6.97 - Coh b - 12.43 + Abs xs + 34.8 + + + Dens (at/nm3) + 24.24 mminc (Å-1) @@ -3444,33 +3440,33 @@ 21Ne 1 - - mmabs/l (Å-2) - 1.07E14 - - - Abs xs - 0.67 - Inc xs 0.05 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 1.07E14 M (amu) 21.0 + + Coh b + 6.66 + Dens (g/cm3) 0.0 - Coh b - 6.66 + Abs xs + 0.67 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -3482,33 +3478,33 @@ 80Se 1 - - mmabs/l (Å-2) - 2.55E13 - - - Abs xs - 0.61 - Inc xs 0.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 2.55E13 M (amu) 80.0 + + Coh b + 7.48 + Dens (g/cm3) 0.0 - Coh b - 7.48 + Abs xs + 0.61 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -3520,33 +3516,33 @@ 17O 1 - - mmabs/l (Å-2) - 4.65E13 - - - Abs xs - 0.236 - Inc xs 0.004 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 4.65E13 M (amu) 17.0 + + Coh b + 5.78 + Dens (g/cm3) 0.0 - Coh b - 5.78 + Abs xs + 0.236 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -3558,33 +3554,33 @@ 170Er 1 - - mmabs/l (Å-2) - 1.14E14 - - - Abs xs - 5.8 - Inc xs 0.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 1.14E14 M (amu) 170.0 + + Coh b + 9.6 + Dens (g/cm3) 0.0 - Coh b - 9.6 + Abs xs + 5.8 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -3596,33 +3592,33 @@ 44Ca 1 - - mmabs/l (Å-2) - 6.7E13 - - - Abs xs - 0.88 - Inc xs 0.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 6.7E13 M (amu) 44.0 + + Coh b + 1.42 + Dens (g/cm3) 0.0 - Coh b - 1.42 + Abs xs + 0.88 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -3634,33 +3630,33 @@ 132Ba 1 - - mmabs/l (Å-2) - 1.78E14 - - - Abs xs - 7.0 - Inc xs 0.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 1.78E14 M (amu) 132.0 + + Coh b + 7.8 + Dens (g/cm3) 0.0 - Coh b - 7.8 + Abs xs + 7.0 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -3672,33 +3668,33 @@ 240Pu 1 - - mmabs/l (Å-2) - 4.04E15 - - - Abs xs - 289.6 - Inc xs 0.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 4.04E15 M (amu) 240.0 + + Coh b + 3.5 + Dens (g/cm3) 0.0 - Coh b - 3.5 + Abs xs + 289.6 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -3710,33 +3706,33 @@ 40Ca 1 - - mmabs/l (Å-2) - 3.43E13 - - - Abs xs - 0.41 - Inc xs 0.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 3.43E13 M (amu) 40.0 + + Coh b + 4.8 + Dens (g/cm3) 0.0 - Coh b - 4.8 + Abs xs + 0.41 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -3748,33 +3744,33 @@ 28Si 1 - - mmabs/l (Å-2) - 2.12E13 - - - Abs xs - 0.177 - Inc xs 0.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 2.12E13 M (amu) 28.0 + + Coh b + 4.107 + Dens (g/cm3) 0.0 - Coh b - 4.107 + Abs xs + 0.177 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -3786,33 +3782,33 @@ 25Mg 1 - - mmabs/l (Å-2) - 2.54E13 - - - Abs xs - 0.19 - Inc xs 0.28 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 2.54E13 M (amu) 25.0 + + Coh b + 3.62 + Dens (g/cm3) 0.0 - Coh b - 3.62 + Abs xs + 0.19 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -3824,33 +3820,33 @@ 58Fe 1 - - mmabs/l (Å-2) - 7.39E13 - - - Abs xs - 1.28 - Inc xs 0.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 7.39E13 M (amu) 58.0 + + Coh b + 15.0 + Dens (g/cm3) 0.0 - Coh b - 15.0 + Abs xs + 1.28 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -3862,33 +3858,33 @@ 246Cm 1 - - mmabs/l (Å-2) - 1.85E13 - - - Abs xs - 1.36 - Inc xs 0.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 1.85E13 M (amu) 246.0 + + Coh b + 9.3 + Dens (g/cm3) 0.0 - Coh b - 9.3 + Abs xs + 1.36 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -3900,33 +3896,33 @@ Xe 1 - - mmabs/l (Å-2) - 6.09E14 - - - Abs xs - 23.9 - Inc xs 0.0 - Dens (at/nm3) - 0.03 + mmabs/l (Å-2) + 6.09E14 M (amu) 131.3 + + Coh b + 4.92 + Dens (g/cm3) 0.01 - Coh b - 4.92 + Abs xs + 23.9 + + + Dens (at/nm3) + 0.03 mminc (Å-1) @@ -3938,33 +3934,33 @@ 168Yb 1 - - mmabs/l (Å-2) - 4.44E16 - - - Abs xs - 2230.0 - Inc xs 0.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 4.44E16 M (amu) 168.0 + + Coh b + -4.07 + Dens (g/cm3) 0.0 - Coh b - -4.07 + Abs xs + 2230.0 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -3976,33 +3972,33 @@ 54Fe 1 - - mmabs/l (Å-2) - 1.4E14 - - - Abs xs - 2.25 - Inc xs 0.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 1.4E14 M (amu) 54.0 + + Coh b + 4.2 + Dens (g/cm3) 0.0 - Coh b - 4.2 + Abs xs + 2.25 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -4014,33 +4010,33 @@ 16O 1 - - mmabs/l (Å-2) - 2.09E10 - - - Abs xs - 1.0E-4 - Inc xs 0.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 2.09E10 M (amu) 16.0 + + Coh b + 5.803 + Dens (g/cm3) 0.0 - Coh b - 5.803 + Abs xs + 1.0E-4 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -4052,33 +4048,33 @@ 49Ti 1 - - mmabs/l (Å-2) - 1.5E14 - - - Abs xs - 2.2 - Inc xs 3.3 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 1.5E14 M (amu) 49.0 + + Coh b + 1.04 + Dens (g/cm3) 0.0 - Coh b - 1.04 + Abs xs + 2.2 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -4090,33 +4086,33 @@ 65Cu 1 - - mmabs/l (Å-2) - 1.12E14 - - - Abs xs - 2.17 - Inc xs 0.4 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 1.12E14 M (amu) 65.0 + + Coh b + 10.61 + Dens (g/cm3) 0.0 - Coh b - 10.61 + Abs xs + 2.17 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -4128,33 +4124,33 @@ 186W 1 - - mmabs/l (Å-2) - 6.82E14 - - - Abs xs - 37.9 - Inc xs 0.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 6.82E14 M (amu) 186.0 + + Coh b + -0.72 + Dens (g/cm3) 0.0 - Coh b - -0.72 + Abs xs + 37.9 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -4166,33 +4162,33 @@ 180Hf 1 - - mmabs/l (Å-2) - 2.43E14 - - - Abs xs - 13.04 - Inc xs 0.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 2.43E14 M (amu) 180.0 + + Coh b + 13.2 + Dens (g/cm3) 0.0 - Coh b - 13.2 + Abs xs + 13.04 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -4204,33 +4200,33 @@ 77Se 1 - - mmabs/l (Å-2) - 1.83E15 - - - Abs xs - 42.0 - Inc xs 0.05 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 1.83E15 M (amu) 77.0 + + Coh b + 8.25 + Dens (g/cm3) 0.0 - Coh b - 8.25 + Abs xs + 42.0 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -4242,33 +4238,33 @@ 37Cl 1 - - mmabs/l (Å-2) - 3.92E13 - - - Abs xs - 0.433 - Inc xs 0.001 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 3.92E13 M (amu) 37.0 + + Coh b + 3.08 + Dens (g/cm3) 0.0 - Coh b - 3.08 + Abs xs + 0.433 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -4280,33 +4276,33 @@ 167Er 1 - - mmabs/l (Å-2) - 1.32E16 - - - Abs xs - 659.0 - Inc xs 0.13 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 1.32E16 M (amu) 167.0 + + Coh b + 3.0 + Dens (g/cm3) 0.0 - Coh b - 3.0 + Abs xs + 659.0 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -4318,33 +4314,33 @@ 40Ar 1 - - mmabs/l (Å-2) - 5.52E13 - - - Abs xs - 0.66 - Inc xs 0.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 5.52E13 M (amu) 40.0 + + Coh b + 1.83 + Dens (g/cm3) 0.0 - Coh b - 1.83 + Abs xs + 0.66 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -4356,33 +4352,33 @@ 71Ga 1 - - mmabs/l (Å-2) - 1.7E14 - - - Abs xs - 3.61 - Inc xs 0.084 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 1.7E14 M (amu) 71.0 + + Coh b + 6.4 + Dens (g/cm3) 0.0 - Coh b - 6.4 + Abs xs + 3.61 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -4394,33 +4390,33 @@ 15N 1 - - mmabs/l (Å-2) - 5.36E9 - - - Abs xs - 2.4E-5 - Inc xs 5.0E-5 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 5.36E9 M (amu) 15.0 + + Coh b + 6.44 + Dens (g/cm3) 0.0 - Coh b - 6.44 + Abs xs + 2.4E-5 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -4432,33 +4428,33 @@ 138La 1 - - mmabs/l (Å-2) - 1.38E15 - - - Abs xs - 57.0 - Inc xs 0.5 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 1.38E15 M (amu) 138.0 + + Coh b + 8.0 + Dens (g/cm3) 0.0 - Coh b - 8.0 + Abs xs + 57.0 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -4470,33 +4466,33 @@ 126Te 1 - - mmabs/l (Å-2) - 2.76E13 - - - Abs xs - 1.04 - Inc xs 0.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 2.76E13 M (amu) 126.0 + + Coh b + 5.56 + Dens (g/cm3) 0.0 - Coh b - 5.56 + Abs xs + 1.04 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -4508,33 +4504,33 @@ 156Gd 1 - - mmabs/l (Å-2) - 3.22E13 - - - Abs xs - 1.5 - Inc xs 0.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 3.22E13 M (amu) 156.0 + + Coh b + 6.3 + Dens (g/cm3) 0.0 - Coh b - 6.3 + Abs xs + 1.5 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -4546,33 +4542,33 @@ 122Te 1 - - mmabs/l (Å-2) - 9.33E13 - - - Abs xs - 3.4 - Inc xs 0.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 9.33E13 M (amu) 122.0 + + Coh b + 3.8 + Dens (g/cm3) 0.0 - Coh b - 3.8 + Abs xs + 3.4 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -4584,33 +4580,33 @@ 154Sm 1 - - mmabs/l (Å-2) - 1.83E14 - - - Abs xs - 8.4 - Inc xs 0.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 1.83E14 M (amu) 154.0 + + Coh b + 9.3 + Dens (g/cm3) 0.0 - Coh b - 9.3 + Abs xs + 8.4 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -4622,33 +4618,33 @@ 152Gd 1 - - mmabs/l (Å-2) - 1.62E16 - - - Abs xs - 735.0 - Inc xs 0.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 1.62E16 M (amu) 152.0 + + Coh b + 10.0 + Dens (g/cm3) 0.0 - Coh b - 10.0 + Abs xs + 735.0 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -4660,33 +4656,33 @@ 163Dy 1 - - mmabs/l (Å-2) - 2.55E15 - - - Abs xs - 124.0 - Inc xs 0.21 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 2.55E15 M (amu) 163.0 + + Coh b + 5.0 + Dens (g/cm3) 0.0 - Coh b - 5.0 + Abs xs + 124.0 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -4698,33 +4694,33 @@ 142Ce 1 - - mmabs/l (Å-2) - 2.24E13 - - - Abs xs - 0.95 - Inc xs 0.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 2.24E13 M (amu) 142.0 + + Coh b + 4.75 + Dens (g/cm3) 0.0 - Coh b - 4.75 + Abs xs + 0.95 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -4736,33 +4732,33 @@ 14N 1 - - mmabs/l (Å-2) - 4.57E14 - - - Abs xs - 1.91 - Inc xs 0.5 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 4.57E14 M (amu) 14.0 + + Coh b + 9.37 + Dens (g/cm3) 0.0 - Coh b - 9.37 + Abs xs + 1.91 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -4774,33 +4770,33 @@ 95Mo 1 - - mmabs/l (Å-2) - 4.62E14 - - - Abs xs - 13.1 - Inc xs 0.5 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 4.62E14 M (amu) 95.0 + + Coh b + 6.91 + Dens (g/cm3) 0.0 - Coh b - 6.91 + Abs xs + 13.1 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -4812,33 +4808,33 @@ 150Sm 1 - - mmabs/l (Å-2) - 2.32E15 - - - Abs xs - 104.0 - Inc xs 0.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 2.32E15 M (amu) 150.0 + + Coh b + 14.0 + Dens (g/cm3) 0.0 - Coh b - 14.0 + Abs xs + 104.0 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -4850,33 +4846,33 @@ 177Hf 1 - - mmabs/l (Å-2) - 7.06E15 - - - Abs xs - 373.0 - Inc xs 0.1 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 7.06E15 M (amu) 177.0 + + Coh b + 0.8 + Dens (g/cm3) 0.0 - Coh b - 0.8 + Abs xs + 373.0 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -4888,33 +4884,33 @@ 184W 1 - - mmabs/l (Å-2) - 3.09E13 - - - Abs xs - 1.7 - Inc xs 0.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 3.09E13 M (amu) 184.0 + + Coh b + 7.48 + Dens (g/cm3) 0.0 - Coh b - 7.48 + Abs xs + 1.7 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -4926,33 +4922,33 @@ 113In 1 - - mmabs/l (Å-2) - 3.56E14 - - - Abs xs - 12.0 - Inc xs 3.7E-5 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 3.56E14 M (amu) 113.0 + + Coh b + 5.39 + Dens (g/cm3) 0.0 - Coh b - 5.39 + Abs xs + 12.0 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -4964,33 +4960,33 @@ 114Cd 1 - - mmabs/l (Å-2) - 9.99E12 - - - Abs xs - 0.34 - Inc xs 0.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 9.99E12 M (amu) 114.0 + + Coh b + 7.5 + Dens (g/cm3) 0.0 - Coh b - 7.5 + Abs xs + 0.34 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -5002,33 +4998,33 @@ 54Cr 1 - - mmabs/l (Å-2) - 2.23E13 - - - Abs xs - 0.36 - Inc xs 0.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 2.23E13 M (amu) 54.0 + + Coh b + 4.55 + Dens (g/cm3) 0.0 - Coh b - 4.55 + Abs xs + 0.36 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -5040,33 +5036,33 @@ 122Sn 1 - - mmabs/l (Å-2) - 4.94E12 - - - Abs xs - 0.18 - Inc xs 0.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 4.94E12 M (amu) 122.0 + + Coh b + 5.74 + Dens (g/cm3) 0.0 - Coh b - 5.74 + Abs xs + 0.18 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -5078,33 +5074,33 @@ 110Cd 1 - - mmabs/l (Å-2) - 3.35E14 - - - Abs xs - 11.0 - Inc xs 0.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 3.35E14 M (amu) 110.0 + + Coh b + 5.9 + Dens (g/cm3) 0.0 - Coh b - 5.9 + Abs xs + 11.0 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -5116,33 +5112,33 @@ 50Cr 1 - - mmabs/l (Å-2) - 1.06E15 - - - Abs xs - 15.8 - Inc xs 0.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 1.06E15 M (amu) 50.0 + + Coh b + -4.5 + Dens (g/cm3) 0.0 - Coh b - -4.5 + Abs xs + 15.8 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -5154,33 +5150,33 @@ 148Nd 1 - - mmabs/l (Å-2) - 5.66E13 - - - Abs xs - 2.5 - Inc xs 0.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 5.66E13 M (amu) 148.0 + + Coh b + 5.7 + Dens (g/cm3) 0.0 - Coh b - 5.7 + Abs xs + 2.5 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -5192,33 +5188,33 @@ 144Nd 1 - - mmabs/l (Å-2) - 8.37E13 - - - Abs xs - 3.6 - Inc xs 0.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 8.37E13 M (amu) 144.0 + + Coh b + 2.8 + Dens (g/cm3) 0.0 - Coh b - 2.8 + Abs xs + 3.6 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -5230,33 +5226,33 @@ 183W 1 - - mmabs/l (Å-2) - 1.85E14 - - - Abs xs - 10.1 - Inc xs 0.3 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 1.85E14 M (amu) 183.0 + + Coh b + 6.53 + Dens (g/cm3) 0.0 - Coh b - 6.53 + Abs xs + 10.1 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -5268,33 +5264,33 @@ 13C 1 - - mmabs/l (Å-2) - 3.53E11 - - - Abs xs - 0.00137 - Inc xs 0.034 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 3.53E11 M (amu) 13.0 + + Coh b + 6.19 + Dens (g/cm3) 0.0 - Coh b - 6.19 + Abs xs + 0.00137 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -5306,33 +5302,33 @@ Tm 1 - - mmabs/l (Å-2) - 1.98E15 - - - Abs xs - 100.0 - Inc xs 0.1 - Dens (at/nm3) - 33.22 + mmabs/l (Å-2) + 1.98E15 M (amu) 168.934 + + Coh b + 7.07 + Dens (g/cm3) 9.32 - Coh b - 7.07 + Abs xs + 100.0 + + + Dens (at/nm3) + 33.22 mminc (Å-1) @@ -5344,33 +5340,33 @@ Tl 1 - - mmabs/l (Å-2) - 5.62E13 - - - Abs xs - 3.43 - Inc xs 0.21 - Dens (at/nm3) - 34.92 + mmabs/l (Å-2) + 5.62E13 M (amu) 204.37 + + Coh b + 8.776 + Dens (g/cm3) 11.85 - Coh b - 8.776 + Abs xs + 3.43 + + + Dens (at/nm3) + 34.92 mminc (Å-1) @@ -5382,33 +5378,33 @@ Ti 1 - - mmabs/l (Å-2) - 4.26E14 - - - Abs xs - 6.09 - Inc xs 2.87 - Dens (at/nm3) - 56.57 + mmabs/l (Å-2) + 4.26E14 M (amu) 47.9 + + Coh b + -3.438 + Dens (g/cm3) 4.5 - Coh b - -3.438 + Abs xs + 6.09 + + + Dens (at/nm3) + 56.57 mminc (Å-1) @@ -5420,33 +5416,33 @@ Th 1 - - mmabs/l (Å-2) - 1.06E14 - - - Abs xs - 7.37 - Inc xs 0.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 1.06E14 M (amu) 232.0381 + + Coh b + 10.31 + Dens (g/cm3) 0.0 - Coh b - 10.31 + Abs xs + 7.37 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -5458,33 +5454,33 @@ Te 1 - - mmabs/l (Å-2) - 1.23E14 - - - Abs xs - 4.7 - Inc xs 0.09 - Dens (at/nm3) - 28.32 + mmabs/l (Å-2) + 1.23E14 M (amu) 127.6 + + Coh b + 5.8 + Dens (g/cm3) 6.0 - Coh b - 5.8 + Abs xs + 4.7 + + + Dens (at/nm3) + 28.32 mminc (Å-1) @@ -5496,33 +5492,33 @@ Tc 1 - - mmabs/l (Å-2) - 6.83E14 - - - Abs xs - 20.0 - Inc xs 0.5 - Dens (at/nm3) - 70.67 + mmabs/l (Å-2) + 6.83E14 M (amu) 98.0 + + Coh b + 6.8 + Dens (g/cm3) 11.5 - Coh b - 6.8 + Abs xs + 20.0 + + + Dens (at/nm3) + 70.67 mminc (Å-1) @@ -5534,33 +5530,33 @@ Tb 1 - - mmabs/l (Å-2) - 4.93E14 - - - Abs xs - 23.4 - Inc xs 0.004 - Dens (at/nm3) - 31.18 + mmabs/l (Å-2) + 4.93E14 M (amu) 158.924 + + Coh b + 7.38 + Dens (g/cm3) 8.23 - Coh b - 7.38 + Abs xs + 23.4 + + + Dens (at/nm3) + 31.18 mminc (Å-1) @@ -5572,33 +5568,33 @@ 147Sm 1 - - mmabs/l (Å-2) - 1.3E15 - - - Abs xs - 57.0 - Inc xs 143.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 1.3E15 M (amu) 147.0 + + Coh b + 14.0 + Dens (g/cm3) 0.0 - Coh b - 14.0 + Abs xs + 57.0 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -5610,33 +5606,33 @@ Ta 1 - - mmabs/l (Å-2) - 3.81E14 - - - Abs xs - 20.6 - Inc xs 0.01 - Dens (at/nm3) - 55.25 + mmabs/l (Å-2) + 3.81E14 M (amu) 180.948 + + Coh b + 6.91 + Dens (g/cm3) 16.6 - Coh b - 6.91 + Abs xs + 20.6 + + + Dens (at/nm3) + 55.25 mminc (Å-1) @@ -5648,33 +5644,33 @@ 105Pd 1 - - mmabs/l (Å-2) - 6.38E14 - - - Abs xs - 20.0 - Inc xs 0.8 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 6.38E14 M (amu) 105.0 + + Coh b + 5.5 + Dens (g/cm3) 0.0 - Coh b - 5.5 + Abs xs + 20.0 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -5686,33 +5682,33 @@ 30Si 1 - - mmabs/l (Å-2) - 1.19E13 - - - Abs xs - 0.107 - Inc xs 0.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 1.19E13 M (amu) 30.0 + + Coh b + 4.58 + Dens (g/cm3) 0.0 - Coh b - 4.58 + Abs xs + 0.107 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -5724,33 +5720,33 @@ 156Dy 1 - - mmabs/l (Å-2) - 7.08E14 - - - Abs xs - 33.0 - Inc xs 0.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 7.08E14 M (amu) 156.0 + + Coh b + 6.1 + Dens (g/cm3) 0.0 - Coh b - 6.1 + Abs xs + 33.0 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -5762,33 +5758,33 @@ 176Lu 1 - - mmabs/l (Å-2) - 3.93E16 - - - Abs xs - 2065.0 - Inc xs 1.2 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 3.93E16 M (amu) 176.0 + + Coh b + 6.1 + Dens (g/cm3) 0.0 - Coh b - 6.1 + Abs xs + 2065.0 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -5800,33 +5796,33 @@ 174Yb 1 - - mmabs/l (Å-2) - 1.34E15 - - - Abs xs - 69.4 - Inc xs 0.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 1.34E15 M (amu) 174.0 + + Coh b + 19.3 + Dens (g/cm3) 0.0 - Coh b - 19.3 + Abs xs + 69.4 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -5838,33 +5834,33 @@ 119Sn 1 - - mmabs/l (Å-2) - 6.19E13 - - - Abs xs - 2.2 - Inc xs 0.3 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 6.19E13 M (amu) 119.0 + + Coh b + 6.12 + Dens (g/cm3) 0.0 - Coh b - 6.12 + Abs xs + 2.2 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -5876,33 +5872,33 @@ 87Sr 1 - - mmabs/l (Å-2) - 6.16E14 - - - Abs xs - 16.0 - Inc xs 0.5 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 6.16E14 M (amu) 87.0 + + Coh b + 7.4 + Dens (g/cm3) 0.0 - Coh b - 7.4 + Abs xs + 16.0 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -5914,33 +5910,33 @@ 182W 1 - - mmabs/l (Å-2) - 3.81E14 - - - Abs xs - 20.7 - Inc xs 0.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 3.81E14 M (amu) 182.0 + + Coh b + 6.97 + Dens (g/cm3) 0.0 - Coh b - 6.97 + Abs xs + 20.7 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -5952,33 +5948,33 @@ Sr 1 - - mmabs/l (Å-2) - 4.89E13 - - - Abs xs - 1.28 - Inc xs 0.06 - Dens (at/nm3) - 17.87 + mmabs/l (Å-2) + 4.89E13 M (amu) 87.62 + + Coh b + 7.02 + Dens (g/cm3) 2.6 - Coh b - 7.02 + Abs xs + 1.28 + + + Dens (at/nm3) + 17.87 mminc (Å-1) @@ -5990,33 +5986,33 @@ 170Yb 1 - - mmabs/l (Å-2) - 2.25E14 - - - Abs xs - 11.4 - Inc xs 0.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 2.25E14 M (amu) 170.0 + + Coh b + 6.77 + Dens (g/cm3) 0.0 - Coh b - 6.77 + Abs xs + 11.4 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -6028,33 +6024,33 @@ 12C 1 - - mmabs/l (Å-2) - 9.85E11 - - - Abs xs - 0.00353 - Inc xs 0.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 9.85E11 M (amu) 12.0 + + Coh b + 6.6511 + Dens (g/cm3) 0.0 - Coh b - 6.6511 + Abs xs + 0.00353 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -6066,33 +6062,33 @@ Sn 1 - - mmabs/l (Å-2) - 1.77E13 - - - Abs xs - 0.626 - Inc xs 0.022 - Dens (at/nm3) - 36.94 + mmabs/l (Å-2) + 1.77E13 M (amu) 118.69 + + Coh b + 6.225 + Dens (g/cm3) 7.28 - Coh b - 6.225 + Abs xs + 0.626 + + + Dens (at/nm3) + 36.94 mminc (Å-1) @@ -6104,33 +6100,33 @@ 51V 1 - - mmabs/l (Å-2) - 3.22E14 - - - Abs xs - 4.9 - Inc xs 5.07 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 3.22E14 M (amu) 51.0 + + Coh b + -0.402 + Dens (g/cm3) 0.0 - Coh b - -0.402 + Abs xs + 4.9 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -6142,33 +6138,33 @@ Sm 1 - - mmabs/l (Å-2) - 1.32E17 - - - Abs xs - 5922.0 - Inc xs 39.0 - Dens (at/nm3) - 30.12 + mmabs/l (Å-2) + 1.32E17 M (amu) 150.35 + + Coh b + 0.8 + Dens (g/cm3) 7.52 - Coh b - 0.8 + Abs xs + 5922.0 + + + Dens (at/nm3) + 30.12 mminc (Å-1) @@ -6180,33 +6176,33 @@ 115Sn 1 - - mmabs/l (Å-2) - 8.73E14 - - - Abs xs - 30.0 - Inc xs 0.3 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 8.73E14 M (amu) 115.0 + + Coh b + 6.0 + Dens (g/cm3) 0.0 - Coh b - 6.0 + Abs xs + 30.0 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -6218,33 +6214,33 @@ Si 1 - - mmabs/l (Å-2) - 2.04E13 - - - Abs xs - 0.171 - Inc xs 0.004 - Dens (at/nm3) - 49.96 + mmabs/l (Å-2) + 2.04E13 M (amu) 28.0855 + + Coh b + 4.1491 + Dens (g/cm3) 2.33 - Coh b - 4.1491 + Abs xs + 0.171 + + + Dens (at/nm3) + 49.96 mminc (Å-1) @@ -6256,33 +6252,33 @@ Se 1 - - mmabs/l (Å-2) - 4.96E14 - - - Abs xs - 11.7 - Inc xs 0.32 - Dens (at/nm3) - 36.68 + mmabs/l (Å-2) + 4.96E14 M (amu) 78.96 + + Coh b + 7.97 + Dens (g/cm3) 4.81 - Coh b - 7.97 + Abs xs + 11.7 + + + Dens (at/nm3) + 36.68 mminc (Å-1) @@ -6294,33 +6290,33 @@ 79Br 1 - - mmabs/l (Å-2) - 4.66E14 - - - Abs xs - 11.0 - Inc xs 0.15 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 4.66E14 M (amu) 79.0 + + Coh b + 6.8 + Dens (g/cm3) 0.0 - Coh b - 6.8 + Abs xs + 11.0 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -6332,33 +6328,33 @@ Sc 1 - - mmabs/l (Å-2) - 2.05E15 - - - Abs xs - 27.5 - Inc xs 4.5 - Dens (at/nm3) - 40.04 + mmabs/l (Å-2) + 2.05E15 M (amu) 44.9559 + + Coh b + 12.29 + Dens (g/cm3) 2.99 - Coh b - 12.29 + Abs xs + 27.5 + + + Dens (at/nm3) + 40.04 mminc (Å-1) @@ -6370,33 +6366,33 @@ Sb 1 - - mmabs/l (Å-2) - 1.35E14 - - - Abs xs - 4.91 - Inc xs 0.007 - Dens (at/nm3) - 33.06 + mmabs/l (Å-2) + 1.35E14 M (amu) 121.75 + + Coh b + 5.57 + Dens (g/cm3) 6.68 - Coh b - 5.57 + Abs xs + 4.91 + + + Dens (at/nm3) + 33.06 mminc (Å-1) @@ -6408,33 +6404,33 @@ 186Os 1 - - mmabs/l (Å-2) - 1.44E15 - - - Abs xs - 80.0 - Inc xs 0.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 1.44E15 M (amu) 186.0 + + Coh b + 11.6 + Dens (g/cm3) 0.0 - Coh b - 11.6 + Abs xs + 80.0 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -6446,33 +6442,33 @@ 135Ba 1 - - mmabs/l (Å-2) - 1.44E14 - - - Abs xs - 5.8 - Inc xs 0.5 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 1.44E14 M (amu) 135.0 + + Coh b + 4.67 + Dens (g/cm3) 0.0 - Coh b - 4.67 + Abs xs + 5.8 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -6484,33 +6480,33 @@ 20Ne 1 - - mmabs/l (Å-2) - 6.03E12 - - - Abs xs - 0.036 - Inc xs 0.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 6.03E12 M (amu) 20.0 + + Coh b + 4.631 + Dens (g/cm3) 0.0 - Coh b - 4.631 + Abs xs + 0.036 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -6522,33 +6518,33 @@ Ru 1 - - mmabs/l (Å-2) - 8.48E13 - - - Abs xs - 2.56 - Inc xs 0.4 - Dens (at/nm3) - 73.29 + mmabs/l (Å-2) + 8.48E13 M (amu) 101.07 + + Coh b + 7.03 + Dens (g/cm3) 12.3 - Coh b - 7.03 + Abs xs + 2.56 + + + Dens (at/nm3) + 73.29 mminc (Å-1) @@ -6560,33 +6556,33 @@ 43Ca 1 - - mmabs/l (Å-2) - 4.83E14 - - - Abs xs - 6.2 - Inc xs 0.5 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 4.83E14 M (amu) 43.0 + + Coh b + -1.56 + Dens (g/cm3) 0.0 - Coh b - -1.56 + Abs xs + 6.2 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -6598,33 +6594,33 @@ 11B 1 - - mmabs/l (Å-2) - 1.67E12 - - - Abs xs - 0.0055 - Inc xs 0.21 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 1.67E12 M (amu) 11.0 + + Coh b + 6.65 + Dens (g/cm3) 0.0 - Coh b - 6.65 + Abs xs + 0.0055 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -6636,33 +6632,33 @@ 50V 1 - - mmabs/l (Å-2) - 4.02E15 - - - Abs xs - 60.0 - Inc xs 0.5 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 4.02E15 M (amu) 50.0 + + Coh b + 7.6 + Dens (g/cm3) 0.0 - Coh b - 7.6 + Abs xs + 60.0 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -6674,33 +6670,33 @@ Rh 1 - - mmabs/l (Å-2) - 4.71E15 - - - Abs xs - 144.8 - Inc xs 0.3 - Dens (at/nm3) - 72.56 + mmabs/l (Å-2) + 4.71E15 M (amu) 102.906 + + Coh b + 5.88 + Dens (g/cm3) 12.4 - Coh b - 5.88 + Abs xs + 144.8 + + + Dens (at/nm3) + 72.56 mminc (Å-1) @@ -6712,33 +6708,33 @@ 24Mg 1 - - mmabs/l (Å-2) - 6.98E12 - - - Abs xs - 0.05 - Inc xs 0.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 6.98E12 M (amu) 24.0 + + Coh b + 5.66 + Dens (g/cm3) 0.0 - Coh b - 5.66 + Abs xs + 0.05 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -6750,33 +6746,33 @@ 87Rb 1 - - mmabs/l (Å-2) - 4.62E12 - - - Abs xs - 0.12 - Inc xs 0.5 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 4.62E12 M (amu) 87.0 + + Coh b + 7.23 + Dens (g/cm3) 0.0 - Coh b - 7.23 + Abs xs + 0.12 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -6788,33 +6784,33 @@ Re 1 - - mmabs/l (Å-2) - 1.61E15 - - - Abs xs - 89.7 - Inc xs 0.9 - Dens (at/nm3) - 66.4 + mmabs/l (Å-2) + 1.61E15 M (amu) 186.2 + + Coh b + 9.2 + Dens (g/cm3) 20.53 - Coh b - 9.2 + Abs xs + 89.7 + + + Dens (at/nm3) + 66.4 mminc (Å-1) @@ -6826,33 +6822,33 @@ 57Fe 1 - - mmabs/l (Å-2) - 1.46E14 - - - Abs xs - 2.48 - Inc xs 0.3 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 1.46E14 M (amu) 57.0 + + Coh b + 2.3 + Dens (g/cm3) 0.0 - Coh b - 2.3 + Abs xs + 2.48 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -6864,33 +6860,33 @@ Rb 1 - - mmabs/l (Å-2) - 1.49E13 - - - Abs xs - 0.38 - Inc xs 0.5 - Dens (at/nm3) - 10.79 + mmabs/l (Å-2) + 1.49E13 M (amu) 85.4678 + + Coh b + 7.09 + Dens (g/cm3) 1.53 - Coh b - 7.09 + Abs xs + 0.38 + + + Dens (at/nm3) + 10.79 mminc (Å-1) @@ -6902,33 +6898,33 @@ Ra 1 - - mmabs/l (Å-2) - 1.9E14 - - - Abs xs - 12.8 - Inc xs 0.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 1.9E14 M (amu) 226.0254 + + Coh b + 10.0 + Dens (g/cm3) 0.0 - Coh b - 10.0 + Abs xs + 12.8 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -6940,33 +6936,33 @@ 48Ti 1 - - mmabs/l (Å-2) - 5.47E14 - - - Abs xs - 7.84 - Inc xs 0.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 5.47E14 M (amu) 48.0 + + Coh b + -6.08 + Dens (g/cm3) 0.0 - Coh b - -6.08 + Abs xs + 7.84 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -6978,33 +6974,33 @@ 180W 1 - - mmabs/l (Å-2) - 5.58E14 - - - Abs xs - 30.0 - Inc xs 0.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 5.58E14 M (amu) 180.0 + + Coh b + 5.0 + Dens (g/cm3) 0.0 - Coh b - 5.0 + Abs xs + 30.0 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -7016,33 +7012,33 @@ 107Ag 1 - - mmabs/l (Å-2) - 1.18E15 - - - Abs xs - 37.6 - Inc xs 0.13 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 1.18E15 M (amu) 107.0 + + Coh b + 7.555 + Dens (g/cm3) 0.0 - Coh b - 7.555 + Abs xs + 37.6 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -7054,33 +7050,33 @@ 10B 1 - - mmabs/l (Å-2) - 1.28E18 - - - Abs xs - 3835.0 - Inc xs 3.0 - Dens (at/nm3) - 130.36 + mmabs/l (Å-2) + 1.28E18 M (amu) 10.0 + + Coh b + -0.1 + Dens (g/cm3) 2.34 - Coh b - -0.1 + Abs xs + 3835.0 + + + Dens (at/nm3) + 130.36 mminc (Å-1) @@ -7092,33 +7088,33 @@ 74Ge 1 - - mmabs/l (Å-2) - 1.81E13 - - - Abs xs - 0.4 - Inc xs 0.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 1.81E13 M (amu) 74.0 + + Coh b + 7.58 + Dens (g/cm3) 0.0 - Coh b - 7.58 + Abs xs + 0.4 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -7130,33 +7126,33 @@ 76Se 1 - - mmabs/l (Å-2) - 3.74E15 - - - Abs xs - 85.0 - Inc xs 0.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 3.74E15 M (amu) 76.0 + + Coh b + 12.2 + Dens (g/cm3) 0.0 - Coh b - 12.2 + Abs xs + 85.0 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -7168,33 +7164,33 @@ 70Ge 1 - - mmabs/l (Å-2) - 1.43E14 - - - Abs xs - 3.0 - Inc xs 0.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 1.43E14 M (amu) 70.0 + + Coh b + 10.0 + Dens (g/cm3) 0.0 - Coh b - 10.0 + Abs xs + 3.0 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -7206,33 +7202,33 @@ 181Ta 1 - - mmabs/l (Å-2) - 3.79E14 - - - Abs xs - 20.5 - Inc xs 0.011 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 3.79E14 M (amu) 181.0 + + Coh b + 6.91 + Dens (g/cm3) 0.0 - Coh b - 6.91 + Abs xs + 20.5 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -7244,33 +7240,33 @@ 166Er 1 - - mmabs/l (Å-2) - 3.95E14 - - - Abs xs - 19.6 - Inc xs 0.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 3.95E14 M (amu) 166.0 + + Coh b + 10.6 + Dens (g/cm3) 0.0 - Coh b - 10.6 + Abs xs + 19.6 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -7282,33 +7278,33 @@ Pt 1 - - mmabs/l (Å-2) - 1.77E14 - - - Abs xs - 10.3 - Inc xs 0.13 - Dens (at/nm3) - 66.21 + mmabs/l (Å-2) + 1.77E14 M (amu) 195.09 + + Coh b + 9.6 + Dens (g/cm3) 21.45 - Coh b - 9.6 + Abs xs + 10.3 + + + Dens (at/nm3) + 66.21 mminc (Å-1) @@ -7320,33 +7316,33 @@ Pr 1 - - mmabs/l (Å-2) - 2.73E14 - - - Abs xs - 11.5 - Inc xs 0.015 - Dens (at/nm3) - 28.95 + mmabs/l (Å-2) + 2.73E14 M (amu) 140.907 + + Coh b + 4.58 + Dens (g/cm3) 6.77 - Coh b - 4.58 + Abs xs + 11.5 + + + Dens (at/nm3) + 28.95 mminc (Å-1) @@ -7358,33 +7354,33 @@ 162Er 1 - - mmabs/l (Å-2) - 3.93E14 - - - Abs xs - 19.0 - Inc xs 0.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 3.93E14 M (amu) 162.0 + + Coh b + 8.8 + Dens (g/cm3) 0.0 - Coh b - 8.8 + Abs xs + 19.0 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -7396,33 +7392,33 @@ 150Nd 1 - - mmabs/l (Å-2) - 2.68E13 - - - Abs xs - 1.2 - Inc xs 0.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 2.68E13 M (amu) 150.0 + + Coh b + 5.3 + Dens (g/cm3) 0.0 - Coh b - 5.3 + Abs xs + 1.2 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -7434,33 +7430,33 @@ 96Zr 1 - - mmabs/l (Å-2) - 7.99E11 - - - Abs xs - 0.0229 - Inc xs 0.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 7.99E11 M (amu) 96.0 + + Coh b + 5.5 + Dens (g/cm3) 0.0 - Coh b - 5.5 + Abs xs + 0.0229 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -7472,33 +7468,33 @@ Pm 1 - - mmabs/l (Å-2) - 3.89E15 - - - Abs xs - 168.4 - Inc xs 1.3 - Dens (at/nm3) - 26.89 + mmabs/l (Å-2) + 3.89E15 M (amu) 145.0 + + Coh b + 12.6 + Dens (g/cm3) 6.48 - Coh b - 12.6 + Abs xs + 168.4 + + + Dens (at/nm3) + 26.89 mminc (Å-1) @@ -7510,33 +7506,33 @@ 92Zr 1 - - mmabs/l (Å-2) - 8.01E12 - - - Abs xs - 0.22 - Inc xs 0.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 8.01E12 M (amu) 92.0 + + Coh b + 7.4 + Dens (g/cm3) 0.0 - Coh b - 7.4 + Abs xs + 0.22 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -7548,33 +7544,33 @@ 125Te 1 - - mmabs/l (Å-2) - 4.15E13 - - - Abs xs - 1.55 - Inc xs 0.008 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 4.15E13 M (amu) 125.0 + + Coh b + 5.02 + Dens (g/cm3) 0.0 - Coh b - 5.02 + Abs xs + 1.55 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -7586,33 +7582,33 @@ Pd 1 - - mmabs/l (Å-2) - 2.17E14 - - - Abs xs - 6.9 - Inc xs 0.093 - Dens (at/nm3) - 68.03 + mmabs/l (Å-2) + 2.17E14 M (amu) 106.4 + + Coh b + 5.91 + Dens (g/cm3) 12.02 - Coh b - 5.91 + Abs xs + 6.9 + + + Dens (at/nm3) + 68.03 mminc (Å-1) @@ -7624,33 +7620,33 @@ 196Pt 1 - - mmabs/l (Å-2) - 1.23E13 - - - Abs xs - 0.72 - Inc xs 0.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 1.23E13 M (amu) 196.0 + + Coh b + 9.89 + Dens (g/cm3) 0.0 - Coh b - 9.89 + Abs xs + 0.72 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -7662,33 +7658,33 @@ 155Gd 1 - - mmabs/l (Å-2) - 1.32E18 - - - Abs xs - 61100.0 - Inc xs 25.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 1.32E18 M (amu) 155.0 + + Coh b + 6.0 + Dens (g/cm3) 0.0 - Coh b - 6.0 + Abs xs + 61100.0 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -7700,33 +7696,33 @@ Pb 1 - - mmabs/l (Å-2) - 2.76E12 - - - Abs xs - 0.171 - Inc xs 0.003 - Dens (at/nm3) - 32.97 + mmabs/l (Å-2) + 2.76E12 M (amu) 207.19 + + Coh b + 9.405 + Dens (g/cm3) 11.34 - Coh b - 9.405 + Abs xs + 0.171 + + + Dens (at/nm3) + 32.97 mminc (Å-1) @@ -7738,33 +7734,33 @@ Pa 1 - - mmabs/l (Å-2) - 2.91E15 - - - Abs xs - 200.6 - Inc xs 0.1 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 2.91E15 M (amu) 231.0359 + + Coh b + 9.1 + Dens (g/cm3) 0.0 - Coh b - 9.1 + Abs xs + 200.6 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -7776,33 +7772,33 @@ 68Zn 1 - - mmabs/l (Å-2) - 5.42E13 - - - Abs xs - 1.1 - Inc xs 0.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 5.42E13 M (amu) 68.0 + + Coh b + 6.03 + Dens (g/cm3) 0.0 - Coh b - 6.03 + Abs xs + 1.1 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -7814,33 +7810,33 @@ 98Mo 1 - - mmabs/l (Å-2) - 4.34E12 - - - Abs xs - 0.127 - Inc xs 0.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 4.34E12 M (amu) 98.0 + + Coh b + 6.58 + Dens (g/cm3) 0.0 - Coh b - 6.58 + Abs xs + 0.127 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -7852,33 +7848,33 @@ 192Pt 1 - - mmabs/l (Å-2) - 1.74E14 - - - Abs xs - 10.0 - Inc xs 0.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 1.74E14 M (amu) 192.0 + + Coh b + 9.9 + Dens (g/cm3) 0.0 - Coh b - 9.9 + Abs xs + 10.0 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -7890,33 +7886,33 @@ 162Dy 1 - - mmabs/l (Å-2) - 4.01E15 - - - Abs xs - 194.0 - Inc xs 0.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 4.01E15 M (amu) 162.0 + + Coh b + -1.4 + Dens (g/cm3) 0.0 - Coh b - -1.4 + Abs xs + 194.0 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -7928,33 +7924,33 @@ 62Ni 1 - - mmabs/l (Å-2) - 7.83E14 - - - Abs xs - 14.5 - Inc xs 0.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 7.83E14 M (amu) 62.0 + + Coh b + -8.7 + Dens (g/cm3) 0.0 - Coh b - -8.7 + Abs xs + 14.5 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -7966,33 +7962,33 @@ 208Pb 1 - - mmabs/l (Å-2) - 7.73E9 - - - Abs xs - 4.8E-4 - Inc xs 0.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 7.73E9 M (amu) 208.0 + + Coh b + 9.5 + Dens (g/cm3) 0.0 - Coh b - 9.5 + Abs xs + 4.8E-4 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -8004,33 +8000,33 @@ 64Zn 1 - - mmabs/l (Å-2) - 4.87E13 - - - Abs xs - 0.93 - Inc xs 0.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 4.87E13 M (amu) 64.0 + + Coh b + 5.22 + Dens (g/cm3) 0.0 - Coh b - 5.22 + Abs xs + 0.93 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -8042,33 +8038,33 @@ 94Mo 1 - - mmabs/l (Å-2) - 5.34E11 - - - Abs xs - 0.015 - Inc xs 0.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 5.34E11 M (amu) 94.0 + + Coh b + 6.8 + Dens (g/cm3) 0.0 - Coh b - 6.8 + Abs xs + 0.015 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -8080,33 +8076,33 @@ Os 1 - - mmabs/l (Å-2) - 2.82E14 - - - Abs xs - 16.0 - Inc xs 0.3 - Dens (at/nm3) - 71.18 + mmabs/l (Å-2) + 2.82E14 M (amu) 190.2 + + Coh b + 10.7 + Dens (g/cm3) 22.48 - Coh b - 10.7 + Abs xs + 16.0 + + + Dens (at/nm3) + 71.18 mminc (Å-1) @@ -8118,33 +8114,33 @@ 176Hf 1 - - mmabs/l (Å-2) - 4.47E14 - - - Abs xs - 23.5 - Inc xs 0.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 4.47E14 M (amu) 176.0 + + Coh b + 6.61 + Dens (g/cm3) 0.0 - Coh b - 6.61 + Abs xs + 23.5 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -8156,33 +8152,33 @@ 204Pb 1 - - mmabs/l (Å-2) - 1.07E13 - - - Abs xs - 0.65 - Inc xs 0.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 1.07E13 M (amu) 204.0 + + Coh b + 9.9 + Dens (g/cm3) 0.0 - Coh b - 9.9 + Abs xs + 0.65 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -8194,33 +8190,33 @@ 185Re 1 - - mmabs/l (Å-2) - 2.03E15 - - - Abs xs - 112.0 - Inc xs 0.5 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 2.03E15 M (amu) 185.0 + + Coh b + 9.0 + Dens (g/cm3) 0.0 - Coh b - 9.0 + Abs xs + 112.0 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -8232,33 +8228,33 @@ 113Cd 1 - - mmabs/l (Å-2) - 6.1E17 - - - Abs xs - 20600.0 - Inc xs 0.3 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 6.1E17 M (amu) 113.0 + + Coh b + -8.0 + Dens (g/cm3) 0.0 - Coh b - -8.0 + Abs xs + 20600.0 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -8270,33 +8266,33 @@ 53Cr 1 - - mmabs/l (Å-2) - 1.14E15 - - - Abs xs - 18.1 - Inc xs 5.93 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 1.14E15 M (amu) 53.0 + + Coh b + -4.2 + Dens (g/cm3) 0.0 - Coh b - -4.2 + Abs xs + 18.1 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -8308,33 +8304,33 @@ 36Ar 1 - - mmabs/l (Å-2) - 4.84E14 - - - Abs xs - 5.2 - Inc xs 0.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 4.84E14 M (amu) 36.0 + + Coh b + 24.9 + Dens (g/cm3) 0.0 - Coh b - 24.9 + Abs xs + 5.2 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -8346,33 +8342,33 @@ 238U 1 - - mmabs/l (Å-2) - 3.77E13 - - - Abs xs - 2.68 - Inc xs 0.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 3.77E13 M (amu) 238.0 + + Coh b + 8.402 + Dens (g/cm3) 0.0 - Coh b - 8.402 + Abs xs + 2.68 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -8384,33 +8380,33 @@ 192Os 1 - - mmabs/l (Å-2) - 3.49E13 - - - Abs xs - 2.0 - Inc xs 0.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 3.49E13 M (amu) 192.0 + + Coh b + 11.5 + Dens (g/cm3) 0.0 - Coh b - 11.5 + Abs xs + 2.0 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -8422,33 +8418,33 @@ 121Sb 1 - - mmabs/l (Å-2) - 1.59E14 - - - Abs xs - 5.75 - Inc xs 3.0E-4 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 1.59E14 M (amu) 121.0 + + Coh b + 5.71 + Dens (g/cm3) 0.0 - Coh b - 5.71 + Abs xs + 5.75 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -8460,33 +8456,33 @@ 81Br 1 - - mmabs/l (Å-2) - 1.12E14 - - - Abs xs - 2.7 - Inc xs 0.05 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 1.12E14 M (amu) 81.0 + + Coh b + 6.79 + Dens (g/cm3) 0.0 - Coh b - 6.79 + Abs xs + 2.7 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -8498,33 +8494,33 @@ 39K 1 - - mmabs/l (Å-2) - 1.8E14 - - - Abs xs - 2.1 - Inc xs 0.25 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 1.8E14 M (amu) 39.0 + + Coh b + 3.74 + Dens (g/cm3) 0.0 - Coh b - 3.74 + Abs xs + 2.1 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -8536,33 +8532,33 @@ Np 1 - - mmabs/l (Å-2) - 2.48E15 - - - Abs xs - 175.9 - Inc xs 0.5 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 2.48E15 M (amu) 237.0482 + + Coh b + 10.55 + Dens (g/cm3) 0.0 - Coh b - 10.55 + Abs xs + 175.9 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -8574,33 +8570,33 @@ 143Nd 1 - - mmabs/l (Å-2) - 7.89E15 - - - Abs xs - 337.0 - Inc xs 55.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 7.89E15 M (amu) 143.0 + + Coh b + 14.0 + Dens (g/cm3) 0.0 - Coh b - 14.0 + Abs xs + 337.0 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -8612,33 +8608,33 @@ 151Eu 1 - - mmabs/l (Å-2) - 2.02E17 - - - Abs xs - 9100.0 - Inc xs 3.1 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 2.02E17 M (amu) 151.0 + + Coh b + 6.13 + Dens (g/cm3) 0.0 - Coh b - 6.13 + Abs xs + 9100.0 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -8650,33 +8646,33 @@ Ni 1 - - mmabs/l (Å-2) - 2.56E14 - - - Abs xs - 4.49 - Inc xs 5.2 - Dens (at/nm3) - 91.31 + mmabs/l (Å-2) + 2.56E14 M (amu) 58.7 + + Coh b + 10.3 + Dens (g/cm3) 8.9 - Coh b - 10.3 + Abs xs + 4.49 + + + Dens (at/nm3) + 91.31 mminc (Å-1) @@ -8688,33 +8684,33 @@ Ne 1 - - mmabs/l (Å-2) - 6.47E12 - - - Abs xs - 0.039 - Inc xs 0.008 - Dens (at/nm3) - 0.03 + mmabs/l (Å-2) + 6.47E12 M (amu) 20.179 + + Coh b + 4.566 + Dens (g/cm3) 0.0 - Coh b - 4.566 + Abs xs + 0.039 + + + Dens (at/nm3) + 0.03 mminc (Å-1) @@ -8726,33 +8722,33 @@ Nd 1 - - mmabs/l (Å-2) - 1.17E15 - - - Abs xs - 50.5 - Inc xs 9.2 - Dens (at/nm3) - 29.24 + mmabs/l (Å-2) + 1.17E15 M (amu) 144.24 + + Coh b + 7.69 + Dens (g/cm3) 7.0 - Coh b - 7.69 + Abs xs + 50.5 + + + Dens (at/nm3) + 29.24 mminc (Å-1) @@ -8764,33 +8760,33 @@ Nb 1 - - mmabs/l (Å-2) - 4.14E13 - - - Abs xs - 1.15 - Inc xs 0.0024 - Dens (at/nm3) - 55.55 + mmabs/l (Å-2) + 4.14E13 M (amu) 92.9064 + + Coh b + 7.054 + Dens (g/cm3) 8.57 - Coh b - 7.054 + Abs xs + 1.15 + + + Dens (at/nm3) + 55.55 mminc (Å-1) @@ -8802,33 +8798,33 @@ Na 1 - - mmabs/l (Å-2) - 7.72E13 - - - Abs xs - 0.53 - Inc xs 1.62 - Dens (at/nm3) - 25.41 + mmabs/l (Å-2) + 7.72E13 M (amu) 22.9898 + + Coh b + 3.63 + Dens (g/cm3) 0.97 - Coh b - 3.63 + Abs xs + 0.53 + + + Dens (at/nm3) + 25.41 mminc (Å-1) @@ -8840,33 +8836,33 @@ 108Pd 1 - - mmabs/l (Å-2) - 2.65E14 - - - Abs xs - 8.55 - Inc xs 0.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 2.65E14 M (amu) 108.0 + + Coh b + 4.1 + Dens (g/cm3) 0.0 - Coh b - 4.1 + Abs xs + 8.55 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -8878,33 +8874,33 @@ 138Ce 1 - - mmabs/l (Å-2) - 2.67E13 - - - Abs xs - 1.1 - Inc xs 0.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 2.67E13 M (amu) 138.0 + + Coh b + 6.7 + Dens (g/cm3) 0.0 - Coh b - 6.7 + Abs xs + 1.1 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -8916,33 +8912,33 @@ 175Lu 1 - - mmabs/l (Å-2) - 4.02E14 - - - Abs xs - 21.0 - Inc xs 0.6 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 4.02E14 M (amu) 175.0 + + Coh b + 7.24 + Dens (g/cm3) 0.0 - Coh b - 7.24 + Abs xs + 21.0 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -8954,33 +8950,33 @@ 104Pd 1 - - mmabs/l (Å-2) - 1.93E13 - - - Abs xs - 0.6 - Inc xs 0.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 1.93E13 M (amu) 104.0 + + Coh b + 7.7 + Dens (g/cm3) 0.0 - Coh b - 7.7 + Abs xs + 0.6 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -8992,33 +8988,33 @@ 173Yb 1 - - mmabs/l (Å-2) - 3.31E14 - - - Abs xs - 17.1 - Inc xs 3.5 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 3.31E14 M (amu) 173.0 + + Coh b + 9.56 + Dens (g/cm3) 0.0 - Coh b - 9.56 + Abs xs + 17.1 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -9030,33 +9026,33 @@ Mo 1 - - mmabs/l (Å-2) - 8.65E13 - - - Abs xs - 2.48 - Inc xs 0.04 - Dens (at/nm3) - 64.02 + mmabs/l (Å-2) + 8.65E13 M (amu) 95.94 + + Coh b + 6.715 + Dens (g/cm3) 10.2 - Coh b - 6.715 + Abs xs + 2.48 + + + Dens (at/nm3) + 64.02 mminc (Å-1) @@ -9068,33 +9064,33 @@ Mn 1 - - mmabs/l (Å-2) - 8.11E14 - - - Abs xs - 13.3 - Inc xs 0.4 - Dens (at/nm3) - 78.92 + mmabs/l (Å-2) + 8.11E14 M (amu) 54.938 + + Coh b + -3.73 + Dens (g/cm3) 7.2 - Coh b - -3.73 + Abs xs + 13.3 + + + Dens (at/nm3) + 78.92 mminc (Å-1) @@ -9106,33 +9102,33 @@ 203Tl 1 - - mmabs/l (Å-2) - 1.88E14 - - - Abs xs - 11.4 - Inc xs 0.14 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 1.88E14 M (amu) 203.0 + + Coh b + 6.99 + Dens (g/cm3) 0.0 - Coh b - 6.99 + Abs xs + 11.4 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -9144,33 +9140,33 @@ 86Sr 1 - - mmabs/l (Å-2) - 4.05E13 - - - Abs xs - 1.04 - Inc xs 0.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 4.05E13 M (amu) 86.0 + + Coh b + 5.67 + Dens (g/cm3) 0.0 - Coh b - 5.67 + Abs xs + 1.04 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -9182,33 +9178,33 @@ 118Sn 1 - - mmabs/l (Å-2) - 6.24E12 - - - Abs xs - 0.22 - Inc xs 0.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 6.24E12 M (amu) 118.0 + + Coh b + 6.07 + Dens (g/cm3) 0.0 - Coh b - 6.07 + Abs xs + 0.22 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -9220,33 +9216,33 @@ 106Cd 1 - - mmabs/l (Å-2) - 3.16E13 - - - Abs xs - 1.0 - Inc xs 0.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 3.16E13 M (amu) 106.0 + + Coh b + 5.0 + Dens (g/cm3) 0.0 - Coh b - 5.0 + Abs xs + 1.0 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -9258,33 +9254,33 @@ Mg 1 - - mmabs/l (Å-2) - 8.68E12 - - - Abs xs - 0.063 - Inc xs 0.08 - Dens (at/nm3) - 43.11 + mmabs/l (Å-2) + 8.68E12 M (amu) 24.305 + + Coh b + 5.375 + Dens (g/cm3) 1.74 - Coh b - 5.375 + Abs xs + 0.063 + + + Dens (at/nm3) + 43.11 mminc (Å-1) @@ -9296,33 +9292,33 @@ 50Ti 1 - - mmabs/l (Å-2) - 1.2E13 - - - Abs xs - 0.179 - Inc xs 0.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 1.2E13 M (amu) 50.0 + + Coh b + 6.18 + Dens (g/cm3) 0.0 - Coh b - 6.18 + Abs xs + 0.179 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -9334,33 +9330,33 @@ 114Sn 1 - - mmabs/l (Å-2) - 3.35E12 - - - Abs xs - 0.114 - Inc xs 0.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 3.35E12 M (amu) 114.0 + + Coh b + 6.2 + Dens (g/cm3) 0.0 - Coh b - 6.2 + Abs xs + 0.114 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -9372,33 +9368,33 @@ 189Os 1 - - mmabs/l (Å-2) - 4.43E14 - - - Abs xs - 25.0 - Inc xs 0.5 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 4.43E14 M (amu) 189.0 + + Coh b + 10.7 + Dens (g/cm3) 0.0 - Coh b - 10.7 + Abs xs + 25.0 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -9410,33 +9406,33 @@ 138Ba 1 - - mmabs/l (Å-2) - 6.55E12 - - - Abs xs - 0.27 - Inc xs 0.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 6.55E12 M (amu) 138.0 + + Coh b + 4.84 + Dens (g/cm3) 0.0 - Coh b - 4.84 + Abs xs + 0.27 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -9448,33 +9444,33 @@ 41K 1 - - mmabs/l (Å-2) - 1.19E14 - - - Abs xs - 1.46 - Inc xs 0.3 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 1.19E14 M (amu) 41.0 + + Coh b + 2.69 + Dens (g/cm3) 0.0 - Coh b - 2.69 + Abs xs + 1.46 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -9486,33 +9482,33 @@ 82Se 1 - - mmabs/l (Å-2) - 1.8E12 - - - Abs xs - 0.044 - Inc xs 0.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 1.8E12 M (amu) 82.0 + + Coh b + 6.34 + Dens (g/cm3) 0.0 - Coh b - 6.34 + Abs xs + 0.044 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -9524,33 +9520,33 @@ Lu 1 - - mmabs/l (Å-2) - 1.42E15 - - - Abs xs - 74.0 - Inc xs 0.7 - Dens (at/nm3) - 33.87 + mmabs/l (Å-2) + 1.42E15 M (amu) 174.97 + + Coh b + 7.21 + Dens (g/cm3) 9.84 - Coh b - 7.21 + Abs xs + 74.0 + + + Dens (at/nm3) + 33.87 mminc (Å-1) @@ -9562,33 +9558,33 @@ 46Ca 1 - - mmabs/l (Å-2) - 5.39E13 - - - Abs xs - 0.74 - Inc xs 0.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 5.39E13 M (amu) 46.0 + + Coh b + 3.6 + Dens (g/cm3) 0.0 - Coh b - 3.6 + Abs xs + 0.74 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -9600,33 +9596,33 @@ 134Ba 1 - - mmabs/l (Å-2) - 5.0E13 - - - Abs xs - 2.0 - Inc xs 0.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 5.0E13 M (amu) 134.0 + + Coh b + 5.7 + Dens (g/cm3) 0.0 - Coh b - 5.7 + Abs xs + 2.0 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -9638,33 +9634,33 @@ 242Pu 1 - - mmabs/l (Å-2) - 2.56E14 - - - Abs xs - 18.5 - Inc xs 0.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 2.56E14 M (amu) 242.0 + + Coh b + 8.1 + Dens (g/cm3) 0.0 - Coh b - 8.1 + Abs xs + 18.5 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -9676,33 +9672,33 @@ 42Ca 1 - - mmabs/l (Å-2) - 5.42E13 - - - Abs xs - 0.68 - Inc xs 0.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 5.42E13 M (amu) 42.0 + + Coh b + 3.36 + Dens (g/cm3) 0.0 - Coh b - 3.36 + Abs xs + 0.68 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -9714,33 +9710,33 @@ Li 1 - - mmabs/l (Å-2) - 3.4E16 - - - Abs xs - 70.5 - Inc xs 0.92 - Dens (at/nm3) - 46.33 + mmabs/l (Å-2) + 3.4E16 M (amu) 6.941 + + Coh b + -1.9 + Dens (g/cm3) 0.53 - Coh b - -1.9 + Abs xs + 70.5 + + + Dens (at/nm3) + 46.33 mminc (Å-1) @@ -9752,33 +9748,33 @@ 130Ba 1 - - mmabs/l (Å-2) - 7.73E14 - - - Abs xs - 30.0 - Inc xs 0.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 7.73E14 M (amu) 130.0 + + Coh b + -3.6 + Dens (g/cm3) 0.0 - Coh b - -3.6 + Abs xs + 30.0 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -9790,33 +9786,33 @@ 235U 1 - - mmabs/l (Å-2) - 9.7E15 - - - Abs xs - 680.9 - Inc xs 0.2 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 9.7E15 M (amu) 235.0 + + Coh b + 10.47 + Dens (g/cm3) 0.0 - Coh b - 10.47 + Abs xs + 680.9 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -9828,33 +9824,33 @@ 248Cm 1 - - mmabs/l (Å-2) - 4.05E13 - - - Abs xs - 3.0 - Inc xs 0.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 4.05E13 M (amu) 248.0 + + Coh b + 7.7 + Dens (g/cm3) 0.0 - Coh b - 7.7 + Abs xs + 3.0 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -9866,33 +9862,33 @@ La 1 - - mmabs/l (Å-2) - 2.16E14 - - - Abs xs - 8.97 - Inc xs 1.13 - Dens (at/nm3) - 26.62 + mmabs/l (Å-2) + 2.16E14 M (amu) 138.906 + + Coh b + 8.24 + Dens (g/cm3) 6.14 - Coh b - 8.24 + Abs xs + 8.97 + + + Dens (at/nm3) + 26.62 mminc (Å-1) @@ -9904,33 +9900,33 @@ 4He 1 - - mmabs/l (Å-2) - 0.0 - - - Abs xs - 0.0 - Inc xs 0.0 - Dens (at/nm3) + mmabs/l (Å-2) 0.0 M (amu) 4.0026 + + Coh b + 3.26 + Dens (g/cm3) 0.0 - Coh b - 3.26 + Abs xs + 0.0 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -9940,35 +9936,35 @@ 36S - 1 - - - mmabs/l (Å-2) - 1.4E13 - - - Abs xs - 0.15 - + 1 + Inc xs 0.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 1.4E13 M (amu) 36.0 + + Coh b + 3.0 + Dens (g/cm3) 0.0 - Coh b - 3.0 + Abs xs + 0.15 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -9980,33 +9976,33 @@ 40K 1 - - mmabs/l (Å-2) - 2.93E15 - - - Abs xs - 35.0 - Inc xs 0.5 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 2.93E15 M (amu) 40.0 + + Coh b + 3.0 + Dens (g/cm3) 0.0 - Coh b - 3.0 + Abs xs + 35.0 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -10018,33 +10014,33 @@ 56Fe 1 - - mmabs/l (Å-2) - 1.55E14 - - - Abs xs - 2.59 - Inc xs 0.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 1.55E14 M (amu) 56.0 + + Coh b + 9.94 + Dens (g/cm3) 0.0 - Coh b - 9.94 + Abs xs + 2.59 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -10056,33 +10052,33 @@ 244Cm 1 - - mmabs/l (Å-2) - 2.22E14 - - - Abs xs - 16.2 - Inc xs 0.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 2.22E14 M (amu) 244.0 + + Coh b + 9.5 + Dens (g/cm3) 0.0 - Coh b - 9.5 + Abs xs + 16.2 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -10094,33 +10090,33 @@ Kr 1 - - mmabs/l (Å-2) - 9.99E14 - - - Abs xs - 25.0 - Inc xs 0.01 - Dens (at/nm3) - 0.03 + mmabs/l (Å-2) + 9.99E14 M (amu) 83.8 + + Coh b + 7.81 + Dens (g/cm3) 0.0 - Coh b - 7.81 + Abs xs + 25.0 + + + Dens (at/nm3) + 0.03 mminc (Å-1) @@ -10132,33 +10128,33 @@ 70Zn 1 - - mmabs/l (Å-2) - 4.4E12 - - - Abs xs - 0.092 - Inc xs 0.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 4.4E12 M (amu) 70.0 + + Coh b + 6.0 + Dens (g/cm3) 0.0 - Coh b - 6.0 + Abs xs + 0.092 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -10170,33 +10166,33 @@ 47Ti 1 - - mmabs/l (Å-2) - 1.21E14 - - - Abs xs - 1.7 - Inc xs 1.5 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 1.21E14 M (amu) 47.0 + + Coh b + 3.63 + Dens (g/cm3) 0.0 - Coh b - 3.63 + Abs xs + 1.7 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -10208,33 +10204,33 @@ 63Cu 1 - - mmabs/l (Å-2) - 2.39E14 - - - Abs xs - 4.5 - Inc xs 0.006 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 2.39E14 M (amu) 63.0 + + Coh b + 6.43 + Dens (g/cm3) 0.0 - Coh b - 6.43 + Abs xs + 4.5 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -10246,33 +10242,33 @@ 234U 1 - - mmabs/l (Å-2) - 1.43E15 - - - Abs xs - 100.1 - Inc xs 0.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 1.43E15 M (amu) 234.0 + + Coh b + 12.4 + Dens (g/cm3) 0.0 - Coh b - 12.4 + Abs xs + 100.1 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -10284,33 +10280,33 @@ 3H 1 - - mmabs/l (Å-2) - 0.0 - - - Abs xs - 0.0 - Inc xs 0.14 - Dens (at/nm3) + mmabs/l (Å-2) 0.0 M (amu) 3.0 + + Coh b + 4.792 + Dens (g/cm3) 0.0 - Coh b - 4.792 + Abs xs + 0.0 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -10322,33 +10318,33 @@ 73Ge 1 - - mmabs/l (Å-2) - 6.93E14 - - - Abs xs - 15.1 - Inc xs 1.5 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 6.93E14 M (amu) 73.0 + + Coh b + 5.02 + Dens (g/cm3) 0.0 - Coh b - 5.02 + Abs xs + 15.1 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -10360,33 +10356,33 @@ 100Mo 1 - - mmabs/l (Å-2) - 1.34E13 - - - Abs xs - 0.4 - Inc xs 0.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 1.34E13 M (amu) 100.0 + + Coh b + 6.73 + Dens (g/cm3) 0.0 - Coh b - 6.73 + Abs xs + 0.4 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -10398,33 +10394,33 @@ 239Pu 1 - - mmabs/l (Å-2) - 1.43E16 - - - Abs xs - 1017.3 - Inc xs 0.2 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 1.43E16 M (amu) 239.0 + + Coh b + 7.7 + Dens (g/cm3) 0.0 - Coh b - 7.7 + Abs xs + 1017.3 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -10436,33 +10432,33 @@ 35Cl 1 - - mmabs/l (Å-2) - 4.22E15 - - - Abs xs - 44.1 - Inc xs 4.7 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 4.22E15 M (amu) 35.0 + + Coh b + 11.65 + Dens (g/cm3) 0.0 - Coh b - 11.65 + Abs xs + 44.1 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -10474,33 +10470,33 @@ 180Ta 1 - - mmabs/l (Å-2) - 1.05E16 - - - Abs xs - 563.0 - Inc xs 0.5 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 1.05E16 M (amu) 180.0 + + Coh b + 7.0 + Dens (g/cm3) 0.0 - Coh b - 7.0 + Abs xs + 563.0 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -10512,33 +10508,33 @@ 128Te 1 - - mmabs/l (Å-2) - 5.62E12 - - - Abs xs - 0.215 - Inc xs 0.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 5.62E12 M (amu) 128.0 + + Coh b + 5.89 + Dens (g/cm3) 0.0 - Coh b - 5.89 + Abs xs + 0.215 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -10550,33 +10546,33 @@ 7Li 1 - - mmabs/l (Å-2) - 2.17E13 - - - Abs xs - 0.0454 - Inc xs 0.78 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 2.17E13 M (amu) 7.0 + + Coh b + -2.22 + Dens (g/cm3) 0.0 - Coh b - -2.22 + Abs xs + 0.0454 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -10588,33 +10584,33 @@ 158Gd 1 - - mmabs/l (Å-2) - 4.66E13 - - - Abs xs - 2.2 - Inc xs 0.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 4.66E13 M (amu) 158.0 + + Coh b + 9.0 + Dens (g/cm3) 0.0 - Coh b - 9.0 + Abs xs + 2.2 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -10626,33 +10622,33 @@ 233U 1 - - mmabs/l (Å-2) - 8.26E15 - - - Abs xs - 574.7 - Inc xs 0.1 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 8.26E15 M (amu) 233.0 + + Coh b + 10.1 + Dens (g/cm3) 0.0 - Coh b - 10.1 + Abs xs + 574.7 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -10664,33 +10660,33 @@ Y 1 - - mmabs/l (Å-2) - 4.82E13 - - - Abs xs - 1.28 - Inc xs 0.15 - Dens (at/nm3) - 30.28 + mmabs/l (Å-2) + 4.82E13 M (amu) 88.9059 + + Coh b + 7.75 + Dens (g/cm3) 4.47 - Coh b - 7.75 + Abs xs + 1.28 + + + Dens (at/nm3) + 30.28 mminc (Å-1) @@ -10702,33 +10698,33 @@ 2H 1 - - mmabs/l (Å-2) - 8.69E11 - - - Abs xs - 5.19E-4 - Inc xs 2.05 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 8.69E11 M (amu) 2.0 + + Coh b + 6.671 + Dens (g/cm3) 0.0 - Coh b - 6.671 + Abs xs + 5.19E-4 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -10740,33 +10736,33 @@ 91Zr 1 - - mmabs/l (Å-2) - 4.3E13 - - - Abs xs - 1.17 - Inc xs 0.15 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 4.3E13 M (amu) 91.0 + + Coh b + 8.7 + Dens (g/cm3) 0.0 - Coh b - 8.7 + Abs xs + 1.17 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -10778,33 +10774,33 @@ W 1 - - mmabs/l (Å-2) - 3.33E14 - - - Abs xs - 18.3 - Inc xs 1.63 - Dens (at/nm3) - 63.38 + mmabs/l (Å-2) + 3.33E14 M (amu) 183.85 + + Coh b + 4.86 + Dens (g/cm3) 19.35 - Coh b - 4.86 + Abs xs + 18.3 + + + Dens (at/nm3) + 63.38 mminc (Å-1) @@ -10816,33 +10812,33 @@ V 1 - - mmabs/l (Å-2) - 3.34E14 - - - Abs xs - 5.08 - Inc xs 5.08 - Dens (at/nm3) - 70.46 + mmabs/l (Å-2) + 3.34E14 M (amu) 50.9415 + + Coh b + -0.3824 + Dens (g/cm3) 5.96 - Coh b - -0.3824 + Abs xs + 5.08 + + + Dens (at/nm3) + 70.46 mminc (Å-1) @@ -10854,33 +10850,33 @@ 124Te 1 - - mmabs/l (Å-2) - 1.84E14 - - - Abs xs - 6.8 - Inc xs 0.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 1.84E14 M (amu) 124.0 + + Coh b + 7.96 + Dens (g/cm3) 0.0 - Coh b - 7.96 + Abs xs + 6.8 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -10892,33 +10888,33 @@ U 1 - - mmabs/l (Å-2) - 1.06E14 - - - Abs xs - 7.57 - Inc xs 0.005 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 1.06E14 M (amu) 238.029 + + Coh b + 8.417 + Dens (g/cm3) 0.0 - Coh b - 8.417 + Abs xs + 7.57 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -10930,33 +10926,33 @@ 195Pt 1 - - mmabs/l (Å-2) - 4.72E14 - - - Abs xs - 27.5 - Inc xs 0.13 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 4.72E14 M (amu) 195.0 + + Coh b + 8.83 + Dens (g/cm3) 0.0 - Coh b - 8.83 + Abs xs + 27.5 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -10968,33 +10964,33 @@ 34S 1 - - mmabs/l (Å-2) - 2.24E13 - - - Abs xs - 0.227 - Inc xs 0.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 2.24E13 M (amu) 34.0 + + Coh b + 3.48 + Dens (g/cm3) 0.0 - Coh b - 3.48 + Abs xs + 0.227 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -11006,33 +11002,33 @@ S 1 - - mmabs/l (Å-2) - 5.54E13 - - - Abs xs - 0.53 - Inc xs 0.007 - Dens (at/nm3) - 38.88 + mmabs/l (Å-2) + 5.54E13 M (amu) 32.06 + + Coh b + 2.847 + Dens (g/cm3) 2.07 - Coh b - 2.847 + Abs xs + 0.53 + + + Dens (at/nm3) + 38.88 mminc (Å-1) @@ -11044,33 +11040,33 @@ 154Gd 1 - - mmabs/l (Å-2) - 1.85E15 - - - Abs xs - 85.0 - Inc xs 0.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 1.85E15 M (amu) 154.0 + + Coh b + 10.0 + Dens (g/cm3) 0.0 - Coh b - 10.0 + Abs xs + 85.0 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -11082,33 +11078,33 @@ P 1 - - mmabs/l (Å-2) - 1.86E13 - - - Abs xs - 0.172 - Inc xs 0.005 - Dens (at/nm3) - 44.72 + mmabs/l (Å-2) + 1.86E13 M (amu) 30.9738 + + Coh b + 5.13 + Dens (g/cm3) 2.3 - Coh b - 5.13 + Abs xs + 0.172 + + + Dens (at/nm3) + 44.72 mminc (Å-1) @@ -11120,33 +11116,33 @@ O 1 - - mmabs/l (Å-2) - 3.98E10 - - - Abs xs - 1.9E-4 - Inc xs 8.0E-4 - Dens (at/nm3) - 0.05 + mmabs/l (Å-2) + 3.98E10 M (amu) 15.9994 + + Coh b + 5.803 + Dens (g/cm3) 0.0 - Coh b - 5.803 + Abs xs + 1.9E-4 + + + Dens (at/nm3) + 0.05 mminc (Å-1) @@ -11158,33 +11154,33 @@ 67Zn 1 - - mmabs/l (Å-2) - 3.4E14 - - - Abs xs - 6.8 - Inc xs 0.28 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 3.4E14 M (amu) 67.0 + + Coh b + 7.56 + Dens (g/cm3) 0.0 - Coh b - 7.56 + Abs xs + 6.8 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -11196,33 +11192,33 @@ 97Mo 1 - - mmabs/l (Å-2) - 8.63E13 - - - Abs xs - 2.5 - Inc xs 0.5 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 8.63E13 M (amu) 97.0 + + Coh b + 7.24 + Dens (g/cm3) 0.0 - Coh b - 7.24 + Abs xs + 2.5 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -11234,33 +11230,33 @@ N 1 - - mmabs/l (Å-2) - 4.54E14 - - - Abs xs - 1.9 - Inc xs 0.5 - Dens (at/nm3) - 0.05 + mmabs/l (Å-2) + 4.54E14 M (amu) 14.0067 + + Coh b + 9.36 + Dens (g/cm3) 0.0 - Coh b - 9.36 + Abs xs + 1.9 + + + Dens (at/nm3) + 0.05 mminc (Å-1) @@ -11272,33 +11268,33 @@ 120Te 1 - - mmabs/l (Å-2) - 6.42E13 - - - Abs xs - 2.3 - Inc xs 0.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 6.42E13 M (amu) 120.0 + + Coh b + 5.3 + Dens (g/cm3) 0.0 - Coh b - 5.3 + Abs xs + 2.3 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -11310,33 +11306,33 @@ Ir 1 - - mmabs/l (Å-2) - 7.4E15 - - - Abs xs - 425.0 - Inc xs 0.0 - Dens (at/nm3) - 70.25 + mmabs/l (Å-2) + 7.4E15 M (amu) 192.2 + + Coh b + 10.6 + Dens (g/cm3) 22.42 - Coh b - 10.6 + Abs xs + 425.0 + + + Dens (at/nm3) + 70.25 mminc (Å-1) @@ -11348,33 +11344,33 @@ 152Sm 1 - - mmabs/l (Å-2) - 4.54E15 - - - Abs xs - 206.0 - Inc xs 0.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 4.54E15 M (amu) 152.0 + + Coh b + -5.0 + Dens (g/cm3) 0.0 - Coh b - -5.0 + Abs xs + 206.0 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -11386,33 +11382,33 @@ 179Hf 1 - - mmabs/l (Å-2) - 7.67E14 - - - Abs xs - 41.0 - Inc xs 0.14 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 7.67E14 M (amu) 179.0 + + Coh b + 7.46 + Dens (g/cm3) 0.0 - Coh b - 7.46 + Abs xs + 41.0 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -11424,33 +11420,33 @@ K 1 - - mmabs/l (Å-2) - 1.8E14 - - - Abs xs - 2.1 - Inc xs 0.27 - Dens (at/nm3) - 13.25 + mmabs/l (Å-2) + 1.8E14 M (amu) 39.0963 + + Coh b + 3.67 + Dens (g/cm3) 0.86 - Coh b - 3.67 + Abs xs + 2.1 + + + Dens (at/nm3) + 13.25 mminc (Å-1) @@ -11462,33 +11458,33 @@ 110Pd 1 - - mmabs/l (Å-2) - 6.88E12 - - - Abs xs - 0.226 - Inc xs 0.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 6.88E12 M (amu) 110.0 + + Coh b + 7.7 + Dens (g/cm3) 0.0 - Coh b - 7.7 + Abs xs + 0.226 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -11500,33 +11496,33 @@ 161Dy 1 - - mmabs/l (Å-2) - 1.25E16 - - - Abs xs - 600.0 - Inc xs 3.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 1.25E16 M (amu) 161.0 + + Coh b + 10.3 + Dens (g/cm3) 0.0 - Coh b - 10.3 + Abs xs + 600.0 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -11538,33 +11534,33 @@ I 1 - - mmabs/l (Å-2) - 1.62E14 - - - Abs xs - 6.15 - Inc xs 0.31 - Dens (at/nm3) - 0.02 + mmabs/l (Å-2) + 1.62E14 M (amu) 126.91 + + Coh b + 5.28 + Dens (g/cm3) 0.0 - Coh b - 5.28 + Abs xs + 6.15 + + + Dens (at/nm3) + 0.02 mminc (Å-1) @@ -11576,33 +11572,33 @@ 140Ce 1 - - mmabs/l (Å-2) - 1.36E13 - - - Abs xs - 0.57 - Inc xs 0.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 1.36E13 M (amu) 140.0 + + Coh b + 4.84 + Dens (g/cm3) 0.0 - Coh b - 4.84 + Abs xs + 0.57 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -11614,33 +11610,33 @@ H 1 - - mmabs/l (Å-2) - 1.1E15 - - - Abs xs - 0.3326 - Inc xs 80.26 - Dens (at/nm3) - 0.05 + mmabs/l (Å-2) + 1.1E15 M (amu) 1.0079 + + Coh b + -3.739 + Dens (g/cm3) 0.0 - Coh b - -3.739 + Abs xs + 0.3326 + + + Dens (at/nm3) + 0.05 mminc (Å-1) @@ -11652,33 +11648,33 @@ In 1 - - mmabs/l (Å-2) - 5.65E15 - - - Abs xs - 193.8 - Inc xs 0.54 - Dens (at/nm3) - 38.29 + mmabs/l (Å-2) + 5.65E15 M (amu) 114.82 + + Coh b + 4.065 + Dens (g/cm3) 7.3 - Coh b - 4.065 + Abs xs + 193.8 + + + Dens (at/nm3) + 38.29 mminc (Å-1) @@ -11690,33 +11686,33 @@ 61Ni 1 - - mmabs/l (Å-2) - 1.37E14 - - - Abs xs - 2.5 - Inc xs 1.9 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 1.37E14 M (amu) 61.0 + + Coh b + 7.6 + Dens (g/cm3) 0.0 - Coh b - 7.6 + Abs xs + 2.5 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -11728,33 +11724,33 @@ 207Pb 1 - - mmabs/l (Å-2) - 1.13E13 - - - Abs xs - 0.699 - Inc xs 0.002 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 1.13E13 M (amu) 207.0 + + Coh b + 9.28 + Dens (g/cm3) 0.0 - Coh b - 9.28 + Abs xs + 0.699 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -11766,33 +11762,33 @@ F 1 - - mmabs/l (Å-2) - 1.69E12 - - - Abs xs - 0.0096 - Inc xs 8.0E-4 - Dens (at/nm3) - 0.05 + mmabs/l (Å-2) + 1.69E12 M (amu) 18.9984 + + Coh b + 5.654 + Dens (g/cm3) 0.0 - Coh b - 5.654 + Abs xs + 0.0096 + + + Dens (at/nm3) + 0.05 mminc (Å-1) @@ -11804,33 +11800,33 @@ 115In 1 - - mmabs/l (Å-2) - 5.88E15 - - - Abs xs - 202.0 - Inc xs 0.55 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 5.88E15 M (amu) 115.0 + + Coh b + 4.01 + Dens (g/cm3) 0.0 - Coh b - 4.01 + Abs xs + 202.0 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -11842,33 +11838,33 @@ 116Cd 1 - - mmabs/l (Å-2) - 2.16E12 - - - Abs xs - 0.075 - Inc xs 0.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 2.16E12 M (amu) 116.0 + + Coh b + 6.3 + Dens (g/cm3) 0.0 - Coh b - 6.3 + Abs xs + 0.075 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -11880,33 +11876,33 @@ C 1 - - mmabs/l (Å-2) - 9.76E11 - - - Abs xs - 0.0035 - Inc xs 0.001 - Dens (at/nm3) - 112.81 + mmabs/l (Å-2) + 9.76E11 M (amu) 12.011 + + Coh b + 6.646 + Dens (g/cm3) 2.25 - Coh b - 6.646 + Abs xs + 0.0035 + + + Dens (at/nm3) + 112.81 mminc (Å-1) @@ -11918,33 +11914,33 @@ B 1 - - mmabs/l (Å-2) - 2.38E17 - - - Abs xs - 767.0 - Inc xs 1.7 - Dens (at/nm3) - 130.36 + mmabs/l (Å-2) + 2.38E17 M (amu) 10.81 + + Coh b + 5.3 + Dens (g/cm3) 2.34 - Coh b - 5.3 + Abs xs + 767.0 + + + Dens (at/nm3) + 130.36 mminc (Å-1) @@ -11956,33 +11952,33 @@ 124Sn 1 - - mmabs/l (Å-2) - 3.59E12 - - - Abs xs - 0.133 - Inc xs 0.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 3.59E12 M (amu) 124.0 + + Coh b + 5.97 + Dens (g/cm3) 0.0 - Coh b - 5.97 + Abs xs + 0.133 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -11994,33 +11990,33 @@ 112Cd 1 - - mmabs/l (Å-2) - 6.58E13 - - - Abs xs - 2.2 - Inc xs 0.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 6.58E13 M (amu) 112.0 + + Coh b + 6.4 + Dens (g/cm3) 0.0 - Coh b - 6.4 + Abs xs + 2.2 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -12032,33 +12028,33 @@ 1H 1 - - mmabs/l (Å-2) - 1.1E15 - - - Abs xs - 0.3326 - Inc xs 80.27 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 1.1E15 M (amu) 1.0079 + + Coh b + -3.7406 + Dens (g/cm3) 0.0 - Coh b - -3.7406 + Abs xs + 0.3326 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -12070,33 +12066,33 @@ 52Cr 1 - - mmabs/l (Å-2) - 4.89E13 - - - Abs xs - 0.76 - Inc xs 0.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 4.89E13 M (amu) 52.0 + + Coh b + 4.92 + Dens (g/cm3) 0.0 - Coh b - 4.92 + Abs xs + 0.76 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -12108,33 +12104,33 @@ 120Sn 1 - - mmabs/l (Å-2) - 3.91E12 - - - Abs xs - 0.14 - Inc xs 0.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 3.91E12 M (amu) 120.0 + + Coh b + 6.49 + Dens (g/cm3) 0.0 - Coh b - 6.49 + Abs xs + 0.14 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -12146,33 +12142,33 @@ 33S 1 - - mmabs/l (Å-2) - 5.48E13 - - - Abs xs - 0.54 - Inc xs 0.3 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 5.48E13 M (amu) 33.0 + + Coh b + 4.74 + Dens (g/cm3) 0.0 - Coh b - 4.74 + Abs xs + 0.54 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -12184,33 +12180,33 @@ 146Nd 1 - - mmabs/l (Å-2) - 3.21E13 - - - Abs xs - 1.4 - Inc xs 0.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 3.21E13 M (amu) 146.0 + + Coh b + 8.7 + Dens (g/cm3) 0.0 - Coh b - 8.7 + Abs xs + 1.4 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -12222,33 +12218,33 @@ Ho 1 - - mmabs/l (Å-2) - 1.31E15 - - - Abs xs - 64.7 - Inc xs 0.36 - Dens (at/nm3) - 32.11 + mmabs/l (Å-2) + 1.31E15 M (amu) 164.93 + + Coh b + 8.01 + Dens (g/cm3) 8.79 - Coh b - 8.01 + Abs xs + 64.7 + + + Dens (at/nm3) + 32.11 mminc (Å-1) @@ -12260,33 +12256,33 @@ Hg 1 - - mmabs/l (Å-2) - 6.21E15 - - - Abs xs - 372.3 - Inc xs 6.6 - Dens (at/nm3) - 40.81 + mmabs/l (Å-2) + 6.21E15 M (amu) 200.59 + + Coh b + 12.692 + Dens (g/cm3) 13.59 - Coh b - 12.692 + Abs xs + 372.3 + + + Dens (at/nm3) + 40.81 mminc (Å-1) @@ -12298,33 +12294,33 @@ 142Nd 1 - - mmabs/l (Å-2) - 4.41E14 - - - Abs xs - 18.7 - Inc xs 0.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 4.41E14 M (amu) 142.0 + + Coh b + 7.7 + Dens (g/cm3) 0.0 - Coh b - 7.7 + Abs xs + 18.7 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -12336,33 +12332,33 @@ Hf 1 - - mmabs/l (Å-2) - 1.95E15 - - - Abs xs - 104.1 - Inc xs 2.6 - Dens (at/nm3) - 44.91 + mmabs/l (Å-2) + 1.95E15 M (amu) 178.49 + + Coh b + 7.7 + Dens (g/cm3) 13.31 - Coh b - 7.7 + Abs xs + 104.1 + + + Dens (at/nm3) + 44.91 mminc (Å-1) @@ -12374,33 +12370,33 @@ He 1 - - mmabs/l (Å-2) - 6.25E12 - - - Abs xs - 0.00747 - Inc xs 0.0 - Dens (at/nm3) - 0.03 + mmabs/l (Å-2) + 6.25E12 M (amu) 4.0026 + + Coh b + 3.26 + Dens (g/cm3) 0.0 - Coh b - 3.26 + Abs xs + 0.00747 + + + Dens (at/nm3) + 0.03 mminc (Å-1) @@ -12412,33 +12408,33 @@ 32S 1 - - mmabs/l (Å-2) - 5.65E13 - - - Abs xs - 0.54 - Inc xs 0.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 5.65E13 M (amu) 32.0 + + Coh b + 2.804 + Dens (g/cm3) 0.0 - Coh b - 2.804 + Abs xs + 0.54 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -12450,33 +12446,33 @@ 149Sm 1 - - mmabs/l (Å-2) - 9.46E17 - - - Abs xs - 42080.0 - Inc xs 137.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 9.46E17 M (amu) 149.0 + + Coh b + -19.2 + Dens (g/cm3) 0.0 - Coh b - -19.2 + Abs xs + 42080.0 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -12488,33 +12484,33 @@ 158Dy 1 - - mmabs/l (Å-2) - 9.11E14 - - - Abs xs - 43.0 - Inc xs 0.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 9.11E14 M (amu) 158.0 + + Coh b + 6.0 + Dens (g/cm3) 0.0 - Coh b - 6.0 + Abs xs + 43.0 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -12526,33 +12522,33 @@ 58Ni 1 - - mmabs/l (Å-2) - 2.66E14 - - - Abs xs - 4.6 - Inc xs 0.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 2.66E14 M (amu) 58.0 + + Coh b + 14.4 + Dens (g/cm3) 0.0 - Coh b - 14.4 + Abs xs + 4.6 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -12564,33 +12560,33 @@ 196Hg 1 - - mmabs/l (Å-2) - 5.26E16 - - - Abs xs - 3080.0 - Inc xs 0.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 5.26E16 M (amu) 196.0 + + Coh b + 30.3 + Dens (g/cm3) 0.0 - Coh b - 30.3 + Abs xs + 3080.0 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -12602,33 +12598,33 @@ 176Yb 1 - - mmabs/l (Å-2) - 5.42E13 - - - Abs xs - 2.85 - Inc xs 0.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 5.42E13 M (amu) 176.0 + + Coh b + 8.72 + Dens (g/cm3) 0.0 - Coh b - 8.72 + Abs xs + 2.85 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -12640,33 +12636,33 @@ 172Yb 1 - - mmabs/l (Å-2) - 1.56E13 - - - Abs xs - 0.8 - Inc xs 0.0 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 1.56E13 M (amu) 172.0 + + Coh b + 9.43 + Dens (g/cm3) 0.0 - Coh b - 9.43 + Abs xs + 0.8 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -12678,33 +12674,33 @@ Ge 1 - - mmabs/l (Å-2) - 1.01E14 - - - Abs xs - 2.2 - Inc xs 0.18 - Dens (at/nm3) - 44.38 + mmabs/l (Å-2) + 1.01E14 M (amu) 72.59 + + Coh b + 8.185 + Dens (g/cm3) 5.35 - Coh b - 8.185 + Abs xs + 2.2 + + + Dens (at/nm3) + 44.38 mminc (Å-1) @@ -12716,33 +12712,33 @@ 117Sn 1 - - mmabs/l (Å-2) - 6.58E13 - - - Abs xs - 2.3 - Inc xs 0.3 - Dens (at/nm3) - 0.0 + mmabs/l (Å-2) + 6.58E13 M (amu) 117.0 + + Coh b + 6.48 + Dens (g/cm3) 0.0 - Coh b - 6.48 + Abs xs + 2.3 + + + Dens (at/nm3) + 0.0 mminc (Å-1) @@ -12754,33 +12750,33 @@ Gd 1 - - mmabs/l (Å-2) - 1.06E18 - - - Abs xs - 49700.0 - Inc xs 151.0 - Dens (at/nm3) - 30.26 + mmabs/l (Å-2) + 1.06E18 M (amu) 157.25 + + Coh b + 6.5 + Dens (g/cm3) 7.9 - Coh b - 6.5 + Abs xs + 49700.0 + + + Dens (at/nm3) + 30.26 mminc (Å-1) -- GitLab From 889b9e409f43514afce3f7142a3bd933e8e9bce9 Mon Sep 17 00:00:00 2001 From: Kasper Gammeltoft Date: Mon, 8 Jun 2015 09:05:26 -0400 Subject: [PATCH 04/18] Created up and down buttons for Nattable, shifts row data. Signed-off-by: Kasper Gammeltoft --- .../client/widgets/ListComponentNattable.java | 23 +++- .../widgets/ListComponentSectionPage.java | 109 +++++++++++++++++- .../data/userMatDB.xml | 4 + 3 files changed, 131 insertions(+), 5 deletions(-) diff --git a/src/org.eclipse.ice.client.widgets/src/org/eclipse/ice/client/widgets/ListComponentNattable.java b/src/org.eclipse.ice.client.widgets/src/org/eclipse/ice/client/widgets/ListComponentNattable.java index bfc0e3fde..8b25582e2 100644 --- a/src/org.eclipse.ice.client.widgets/src/org/eclipse/ice/client/widgets/ListComponentNattable.java +++ b/src/org.eclipse.ice.client.widgets/src/org/eclipse/ice/client/widgets/ListComponentNattable.java @@ -1,6 +1,7 @@ package org.eclipse.ice.client.widgets; import java.util.Iterator; +import java.util.List; import org.eclipse.ice.datastructures.ICEObject.ListComponent; import org.eclipse.jface.viewers.ISelectionChangedListener; @@ -69,6 +70,11 @@ public class ListComponentNattable { */ private NatTable table; + /** + * Provides the information about the selection layer for the NatTable. Gets/Sets the selected rows for the table. + */ + private RowSelectionProvider selectionProvider; + /** * Constructor, needs the parent Composite and the List for data @@ -164,7 +170,7 @@ public class ListComponentNattable { table = natTable; - RowSelectionProvider selectionProvider = new RowSelectionProvider(selectionLayer, (IRowDataProvider)dataProvider, false); + selectionProvider = new RowSelectionProvider(selectionLayer, (IRowDataProvider)dataProvider, false); selectionProvider.addSelectionChangedListener(new ISelectionChangedListener(){ @@ -182,15 +188,28 @@ public class ListComponentNattable { } ); + return; } - + /** + * Gets the currently selected elements. + * @return + */ public ListComponent getSelectedObjects(){ return selectedList; } + /** + * Sets the elements to be selected for this table. + * @param elements + */ + public void setSelection(ListComponent elements){ + StructuredSelection newSelection = new StructuredSelection(elements); + selectionProvider.setSelection(newSelection); + } + /** * Sets a new list to be used for the table data. diff --git a/src/org.eclipse.ice.client.widgets/src/org/eclipse/ice/client/widgets/ListComponentSectionPage.java b/src/org.eclipse.ice.client.widgets/src/org/eclipse/ice/client/widgets/ListComponentSectionPage.java index a4cf137eb..f48184d9d 100644 --- a/src/org.eclipse.ice.client.widgets/src/org/eclipse/ice/client/widgets/ListComponentSectionPage.java +++ b/src/org.eclipse.ice.client.widgets/src/org/eclipse/ice/client/widgets/ListComponentSectionPage.java @@ -157,7 +157,7 @@ public class ListComponentSectionPage extends ICEFormPage { /** * This operation creates the add and delete buttons that are used to add - * layers to the table. + * layers to the table. Also creates buttons for moving layers around. */ private void createAddDeleteButtons() { @@ -241,8 +241,6 @@ public class ListComponentSectionPage extends ICEFormPage { if(list.size()>0){ ListComponent selected = table.getSelectedObjects(); if(selected.size()>0){ - //gets the last index in the list - int index = list.size()-1; //removes that material from the list //lock the list before removing the selection @@ -260,6 +258,111 @@ public class ListComponentSectionPage extends ICEFormPage { } }); + + //Move up button, moves the selected rows up in the table. + Button moveUpButton = new Button(listButtonComposite, SWT.PUSH); + moveUpButton.setText("^"); + moveUpButton.addSelectionListener(new SelectionListener() { + @Override + public void widgetDefaultSelected(SelectionEvent arg0) { + + } + + @SuppressWarnings("unchecked") + @Override + public void widgetSelected(SelectionEvent arg0) { + //makes sure there is actually data in the list to manipulate + if(list.size()>0){ + //gets selected rows + ListComponent selected = table.getSelectedObjects(); + //makes sure there are selected rows + if(selected.size()>0){ + int numSelected = selected.size(); + //makes sure that the user does not move the cell at position 0 to position -1 (past top of table) + if(!(selected.get(0).equals(list.get(0)))){ + + list.getReadWriteLock().writeLock().lock(); + + //gets the object in the list that will be overridden + int index = 0; + Object toMove = list.get(0); + + //overrides the list entries to move the selected rows up by one row + for(int i=0; i0){ + //gets selected rows + ListComponent selected = table.getSelectedObjects(); + //makes sure there are selected rows + if(selected.size()>0){ + int numSelected = selected.size(); + //makes sure that the user does not move the selected cell past the end of the table. + if(!(selected.get(numSelected-1).equals(list.get(list.size()-1)))){ + + list.getReadWriteLock().writeLock().lock(); + + //gets the object in the list that will be overridden + int index = 0; + Object toMove = list.get(0); + + //overrides the list entries to move the selected rows up by one row + for(int i=0; iCoh b 0.8 + + Mu_abs (A^-2) + 0.0 + Dens (g/cm3) 0.0 -- GitLab From 04fcce0db868d9a6b2b949d453bda7fc7854db85 Mon Sep 17 00:00:00 2001 From: Kasper Gammeltoft Date: Wed, 10 Jun 2015 14:07:48 -0400 Subject: [PATCH 05/18] Merged feature.xml. Signed-off-by: Kasper Gammeltoft --- features/org.eclipse.ice.feature/feature.xml | 223 +++++-------------- 1 file changed, 60 insertions(+), 163 deletions(-) diff --git a/features/org.eclipse.ice.feature/feature.xml b/features/org.eclipse.ice.feature/feature.xml index 77220e199..8154aafba 100644 --- a/features/org.eclipse.ice.feature/feature.xml +++ b/features/org.eclipse.ice.feature/feature.xml @@ -2381,197 +2381,169 @@ Java and all Java-based trademarks are trademarks of Oracle Corporation in the U unpack="false"/> - - - - - - - - - - - - - - - - - - - - - - - - - - - - >>>>>> refs/remotes/localRemote/jay/reflectivity + id="org.eclipse.equinox.simpleconfigurator.manipulator" download-size="0" install-size="0" version="0.0.0" -- GitLab From aea05cc40bb706fb1d7d611967bfcdf2bbc8c6a6 Mon Sep 17 00:00:00 2001 From: Kasper Gammeltoft Date: Wed, 10 Jun 2015 14:26:52 -0400 Subject: [PATCH 06/18] Converted several tables to NatTables. Made slight changes to ListComponentNattable, giving editable flags for configuration. Changed the ElementSourceDialog to use a NatTable. Added SingleMaterialWritableTableFormat for formating a NatTable that contains the information on the properties of only one material rather than holding the information for several materials. Changed the material database editor's material info table from a JTable to NatTable in the MaterialDetailsPage class. Added a jUnit test for ListComponentNattable. Signed-off-by: Kasper Gammeltoft --- .../client/widgets/ElementSourceDialog.java | 81 ++++++-- .../client/widgets/ListComponentNattable.java | 117 +++++++++-- .../widgets/ListComponentSectionPage.java | 108 ++-------- .../META-INF/MANIFEST.MF | 4 +- .../ice/materials/ui/MaterialDetailsPage.java | 135 +++++++----- .../SingleMaterialWritableTableFormat.java | 117 +++++++++++ .../META-INF/MANIFEST.MF | 3 +- .../test/ListComponentNattableTest.java | 195 ++++++++++++++++++ 8 files changed, 590 insertions(+), 170 deletions(-) create mode 100644 src/org.eclipse.ice.materials/src/org/eclipse/ice/materials/SingleMaterialWritableTableFormat.java create mode 100644 tests/org.eclipse.ice.client.widgets.test/src/org/eclipse/ice/client/widgets/test/ListComponentNattableTest.java diff --git a/src/org.eclipse.ice.client.widgets/src/org/eclipse/ice/client/widgets/ElementSourceDialog.java b/src/org.eclipse.ice.client.widgets/src/org/eclipse/ice/client/widgets/ElementSourceDialog.java index a2a30a258..431014c01 100644 --- a/src/org.eclipse.ice.client.widgets/src/org/eclipse/ice/client/widgets/ElementSourceDialog.java +++ b/src/org.eclipse.ice.client.widgets/src/org/eclipse/ice/client/widgets/ElementSourceDialog.java @@ -11,17 +11,24 @@ *******************************************************************************/ package org.eclipse.ice.client.widgets; +import java.util.Collections; +import java.util.Comparator; + import org.eclipse.ice.datastructures.ICEObject.IElementSource; +import org.eclipse.ice.datastructures.ICEObject.ListComponent; +import org.eclipse.ice.datastructures.form.Material; import org.eclipse.jface.dialogs.Dialog; +import org.eclipse.jface.layout.GridDataFactory; import org.eclipse.swt.SWT; import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; +import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Shell; -import org.eclipse.swt.widgets.Table; import ca.odell.glazedlists.EventList; -import ca.odell.glazedlists.swt.DefaultEventTableViewer; +import ca.odell.glazedlists.gui.WritableTableFormat; /** * This class is a JFace Dialog for rendering IElementSources that are used by @@ -29,7 +36,7 @@ import ca.odell.glazedlists.swt.DefaultEventTableViewer; * * Only single selections are supported. * - * @author Jay Jay Billings + * @author Jay Jay Billings, Kasper Gammeltoft * */ public class ElementSourceDialog extends Dialog { @@ -40,9 +47,9 @@ public class ElementSourceDialog extends Dialog { private IElementSource source; /** - * The SWT table that shows the list + * The NatTable that shows the list */ - private Table listTable; + private ListComponentNattable listTable; /** * The selection made by the user or null if the dialog was closed. @@ -75,22 +82,64 @@ public class ElementSourceDialog extends Dialog { * org.eclipse.jface.dialogs.Dialog#createDialogArea(org.eclipse.swt.widgets * .Composite) */ + @SuppressWarnings({ "unchecked", "rawtypes" }) @Override protected Control createDialogArea(Composite parent) { Composite comp = (Composite) super.createDialogArea(parent); - - // Create the table to hold the ListComponent. - listTable = new Table(parent, SWT.FLAT); + comp.setLayout(new GridLayout(1, false)); + comp.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1)); + + //Set the background to white (visible on the borders) + comp.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_WHITE)); + + //Get the source's elements to convert to a ListComponent elements = source.getElements(); - DefaultEventTableViewer listTableViewer = new DefaultEventTableViewer( - elements, listTable, source.getTableFormat()); - listTable.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, - 1)); - + + //Create the list component from source + ListComponent list = new ListComponent(); + list.setTableFormat((WritableTableFormat) source.getTableFormat()); + list.addAll(elements); + + //Sorts the list according to the material names + Collections.sort(list, new Comparator() { + public int compare(Object first, Object second) { + return ((Material)first).getName().compareTo(((Material)second).getName()); + } + }); + + //Create the Nattable from the Composite parent and the ListComponent list + //We do NOT want this table to be editable! + listTable = new ListComponentNattable(comp, list, false); + + //Set the size of the shell, have the list fill the entire available area. + int width = listTable.getPreferredWidth(); + int height = listTable.getPreferredHeight(); + comp.getShell().setSize(width*3/4, height); + + //forces the table to grab the extra area in the gridlayout. + GridDataFactory.fillDefaults().grab(true, true).applyTo(listTable.getTable()); + + //Selects the first component by default + ListComponent select = new ListComponent(); + select.add(list.get(0)); + listTable.setSelection(select); + return comp; } + + + /* + * (non-Javadoc) + * @see org.eclipse.jface.window.Window#configureShell(org.eclipse.swt.widgets.Shell) + */ + @Override + protected void configureShell(Shell shell){ + super.configureShell(shell); + shell.setText("Select Material"); + } + /* * (non-Javadoc) @@ -100,8 +149,12 @@ public class ElementSourceDialog extends Dialog { @Override protected void okPressed() { // Set the selection if the OK button was pressed + /** int index = listTable.getSelectionIndex(); selection = elements.get(index); + */ + //Sets the selection, will be the first selected object if there are multiple selections. + selection = (T) listTable.getSelectedObjects().get(0); super.okPressed(); } @@ -115,4 +168,4 @@ public class ElementSourceDialog extends Dialog { return selection; } -} +} \ No newline at end of file diff --git a/src/org.eclipse.ice.client.widgets/src/org/eclipse/ice/client/widgets/ListComponentNattable.java b/src/org.eclipse.ice.client.widgets/src/org/eclipse/ice/client/widgets/ListComponentNattable.java index 8b25582e2..023d07923 100644 --- a/src/org.eclipse.ice.client.widgets/src/org/eclipse/ice/client/widgets/ListComponentNattable.java +++ b/src/org.eclipse.ice.client.widgets/src/org/eclipse/ice/client/widgets/ListComponentNattable.java @@ -1,3 +1,14 @@ +/******************************************************************************* + * Copyright (c) 2014 UT-Battelle, LLC. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Initial API and implementation and/or initial documentation - + * Jay Jay Billings, Kasper Gammeltoft + *******************************************************************************/ package org.eclipse.ice.client.widgets; import java.util.Iterator; @@ -36,6 +47,7 @@ import org.eclipse.nebula.widgets.nattable.selection.RowSelectionProvider; import org.eclipse.nebula.widgets.nattable.selection.SelectionLayer; import org.eclipse.nebula.widgets.nattable.viewport.ViewportLayer; import org.eclipse.swt.SWT; +import org.eclipse.swt.graphics.Color; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; @@ -48,7 +60,7 @@ import org.eclipse.swt.widgets.Composite; */ public class ListComponentNattable { - /** + /** * The Composite will act as a parent where the Nattable will be drawn. * */ @@ -76,6 +88,35 @@ public class ListComponentNattable { private RowSelectionProvider selectionProvider; + /** + * If the NatTable is editable or not (from the user's side). If false, the user will only be able to select table + * cells, if true then the user will be able to change the table's values. + */ + private boolean canEdit; + + private boolean percentResize; + + /** + * Constructor, needs the parent Composite and the List for data. This has the column percent resizing for the table + * automatically turned on. You must use the constructor with that explicit variable if you do not want column width + * resizing to fit the parent Composite. + * + * @param parent + * The Composite to be used as a parent Shell or View. + * @param listComponent + * The ListComponent to be used as list data for the Nattable + * @param editable + * A boolean representing if the table is editable by the user + */ + public ListComponentNattable(Composite parent, ListComponent listComponent, boolean editable){ + sectionClient = parent; + list = listComponent; + selectedList = new ListComponent(); + canEdit = editable; + percentResize = true; + createTable(); + } + /** * Constructor, needs the parent Composite and the List for data * @@ -83,11 +124,18 @@ public class ListComponentNattable { * The Composite to be used as a parent Shell or View. * @param listComponent * The ListComponent to be used as list data for the Nattable + * @param editable + * A boolean representing if the table is editable by the user + * @param sizeForParent + * A boolean representing if the table should take the size of its parent or maintain its preferred size + * and have scroll bars or unfilled space instead. Only effects column width. */ - public ListComponentNattable(Composite parent, ListComponent listComponent){ + public ListComponentNattable(Composite parent, ListComponent listComponent, boolean editable, boolean sizeForParent){ sectionClient = parent; list = listComponent; selectedList = new ListComponent(); + canEdit = editable; + percentResize = sizeForParent; createTable(); } @@ -106,6 +154,10 @@ public class ListComponentNattable { GlazedListsEventLayer eventLayer = new GlazedListsEventLayer(dataLayer, list); + //If the table's columns should autoresize their widths to fill the parent Composite. + dataLayer.setColumnPercentageSizing(percentResize); + + // Create the selection and viewport layers of the table SelectionLayer selectionLayer = new SelectionLayer(eventLayer); ViewportLayer viewportLayer = new ViewportLayer(selectionLayer); @@ -113,7 +165,7 @@ public class ListComponentNattable { // Get the column names String[] columnNames = new String[list.getColumnCount()]; for (int i = 0; i < list.getColumnCount(); i++) { - columnNames[i] = list.getColumnName(i); + columnNames[i] = accessor.getColumnProperty(i); } // Create the column header layer (column names) of the table @@ -126,10 +178,11 @@ public class ListComponentNattable { // Turn the column labels on by default columnHeaderDataLayer .setConfigLabelAccumulator(new ColumnLabelAccumulator()); - + // Create the row header layer (row names) of the table IDataProvider rowHeaderDataProvider = new DefaultRowHeaderDataProvider( dataProvider); + DataLayer rowHeaderDataLayer = new DefaultRowHeaderDataLayer( rowHeaderDataProvider); ILayer rowHeaderLayer = new RowHeaderLayer(rowHeaderDataLayer, @@ -150,34 +203,40 @@ public class ListComponentNattable { natTable.setConfigRegistry(configRegistry); // Set the default table style natTable.addConfiguration(new DefaultNatTableStyleConfiguration()); - + // Make the table editable by updating the configuration rules natTable.addConfiguration(new AbstractRegistryConfiguration() { @Override public void configureRegistry(IConfigRegistry configRegistry) { + //only allow editing if the user can edit. + if(canEdit){ configRegistry.registerConfigAttribute( EditConfigAttributes.CELL_EDITABLE_RULE, IEditableRule.ALWAYS_EDITABLE); + } else { + configRegistry.registerConfigAttribute( + EditConfigAttributes.CELL_EDITABLE_RULE, + IEditableRule.NEVER_EDITABLE); + } } - }); - + }); + // Configure the table (lay it out) natTable.configure(); - natTable.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, + natTable.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false, 1, 1)); - table = natTable; - + //Create a new selectionProvider to listen to selection events. selectionProvider = new RowSelectionProvider(selectionLayer, (IRowDataProvider)dataProvider, false); - + //Add the listener selectionProvider.addSelectionChangedListener(new ISelectionChangedListener(){ @Override public void selectionChanged(SelectionChangedEvent e) { - + //Get the selection and add the selected objects to a ListComponent for reference. IStructuredSelection selection = (IStructuredSelection) e.getSelection(); selectedList.clear(); Iterator it = selection.iterator(); @@ -201,6 +260,14 @@ public class ListComponentNattable { } + /** + * Gets the SWT.COLOR of the current background for the table. By default is a light gray + * @return Color The background color. + */ + public Color getBackground(){ + return table.getBackground(); + } + /** * Sets the elements to be selected for this table. * @param elements @@ -210,6 +277,22 @@ public class ListComponentNattable { selectionProvider.setSelection(newSelection); } + /** + * Gets the preferred width of the table. + * @return int The preferred width + */ + public int getPreferredWidth(){ + return table.getPreferredWidth(); + } + + /** + * Gets the preferred height of the table. + * @return int The preferred height + */ + public int getPreferredHeight(){ + return table.getPreferredHeight(); + } + /** * Sets a new list to be used for the table data. @@ -239,4 +322,12 @@ public class ListComponentNattable { sectionClient = parent; } -} + /** + * Gets the NatTable + * @return + */ + public NatTable getTable(){ + return table; + } + +} \ No newline at end of file diff --git a/src/org.eclipse.ice.client.widgets/src/org/eclipse/ice/client/widgets/ListComponentSectionPage.java b/src/org.eclipse.ice.client.widgets/src/org/eclipse/ice/client/widgets/ListComponentSectionPage.java index f48184d9d..26ef6758e 100644 --- a/src/org.eclipse.ice.client.widgets/src/org/eclipse/ice/client/widgets/ListComponentSectionPage.java +++ b/src/org.eclipse.ice.client.widgets/src/org/eclipse/ice/client/widgets/ListComponentSectionPage.java @@ -45,6 +45,7 @@ import org.eclipse.swt.events.SelectionListener; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Shell; import org.eclipse.ui.forms.IManagedForm; import org.eclipse.ui.forms.editor.FormEditor; @@ -113,7 +114,7 @@ public class ListComponentSectionPage extends ICEFormPage { // Get the parent form and the toolkit final ScrolledForm scrolledForm = managedForm.getForm(); final FormToolkit formToolkit = managedForm.getToolkit(); - + // Set a GridLayout with a single column. Remove the default margins. GridLayout layout = new GridLayout(1, true); layout.marginWidth = 0; @@ -125,6 +126,7 @@ public class ListComponentSectionPage extends ICEFormPage { // Get the parent Composite parent = managedForm.getForm().getBody(); + shell = parent.getShell(); // Create the section and set its layout info Section listSection = formToolkit.createSection(parent, @@ -139,14 +141,20 @@ public class ListComponentSectionPage extends ICEFormPage { sectionClient.setLayout(new GridLayout(2, false)); sectionClient.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1)); - + //parent.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_WHITE)); + //listSection.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_WHITE)); + sectionClient.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_WHITE)); + shell.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_WHITE)); // Draw the table //configureTable(); - - table = new ListComponentNattable(sectionClient, list); + sectionClient.setBackgroundMode(SWT.INHERIT_FORCE); + + table = new ListComponentNattable(sectionClient, list, true); // Create the Add/Delete buttons createAddDeleteButtons(); + + // Set the section client. listSection.setClient(sectionClient); @@ -167,7 +175,7 @@ public class ListComponentSectionPage extends ICEFormPage { listButtonComposite.setLayout(new GridLayout(1, false)); listButtonComposite.setLayoutData(new GridData(SWT.RIGHT, SWT.FILL, false, true, 1, 1)); - + // Create the add button to add a new element to the list. Button addMaterialButton = new Button(listButtonComposite, SWT.PUSH); addMaterialButton.setText("Add"); @@ -259,9 +267,9 @@ public class ListComponentSectionPage extends ICEFormPage { }); - //Move up button, moves the selected rows up in the table. + //Move up button, moves the selected rows up one index. Button moveUpButton = new Button(listButtonComposite, SWT.PUSH); - moveUpButton.setText("^"); + moveUpButton.setText("ʌ"); moveUpButton.addSelectionListener(new SelectionListener() { @Override public void widgetDefaultSelected(SelectionEvent arg0) { @@ -312,7 +320,7 @@ public class ListComponentSectionPage extends ICEFormPage { }); - + //move down button, moves the currently selected rows down one index. Button moveDownButton = new Button(listButtonComposite, SWT.PUSH); moveDownButton.setText("v"); moveDownButton.addSelectionListener(new SelectionListener() { @@ -367,88 +375,6 @@ public class ListComponentSectionPage extends ICEFormPage { return; } - - - - /** - * This operation configures the NatTable used to render the ListComponent - * on the screen. - */ - - /* - private void configureTable() { - - // Create the data layer of the table - IColumnPropertyAccessor accessor = new ListComponentColumnPropertyAccessor( - list); - IDataProvider dataProvider = new ListDataProvider(list, accessor); - DataLayer dataLayer = new DataLayer(dataProvider); - GlazedListsEventLayer eventLayer = new GlazedListsEventLayer(dataLayer, - list); - - // Create the selection and viewport layers of the table - SelectionLayer selectionLayer = new SelectionLayer(eventLayer); - ViewportLayer viewportLayer = new ViewportLayer(selectionLayer); - - // Get the column names - String[] columnNames = new String[list.getColumnCount()]; - for (int i = 0; i < list.getColumnCount(); i++) { - columnNames[i] = list.getColumnName(i); - } - - // Create the column header layer (column names) of the table - IDataProvider columnHeaderDataProvider = new DefaultColumnHeaderDataProvider( - columnNames); - DataLayer columnHeaderDataLayer = new DefaultColumnHeaderDataLayer( - columnHeaderDataProvider); - ILayer columnHeaderLayer = new ColumnHeaderLayer(columnHeaderDataLayer, - viewportLayer, selectionLayer); - // Turn the column labels on by default - columnHeaderDataLayer - .setConfigLabelAccumulator(new ColumnLabelAccumulator()); - - // Create the row header layer (row names) of the table - IDataProvider rowHeaderDataProvider = new DefaultRowHeaderDataProvider( - dataProvider); - DataLayer rowHeaderDataLayer = new DefaultRowHeaderDataLayer( - rowHeaderDataProvider); - ILayer rowHeaderLayer = new RowHeaderLayer(rowHeaderDataLayer, - viewportLayer, selectionLayer); - - // Create the corner layer of the table - IDataProvider cornerDataProvider = new DefaultCornerDataProvider( - columnHeaderDataProvider, rowHeaderDataProvider); - DataLayer cornerDataLayer = new DataLayer(cornerDataProvider); - ILayer cornerLayer = new CornerLayer(cornerDataLayer, rowHeaderLayer, - columnHeaderLayer); - - // Create the grid layer and the table - GridLayer gridLayer = new GridLayer(viewportLayer, columnHeaderLayer, - rowHeaderLayer, cornerLayer); - NatTable natTable = new NatTable(sectionClient, gridLayer, false); - ConfigRegistry configRegistry = new ConfigRegistry(); - natTable.setConfigRegistry(configRegistry); - // Set the default table style - natTable.addConfiguration(new DefaultNatTableStyleConfiguration()); - - // Make the table editable by updating the configuration rules - natTable.addConfiguration(new AbstractRegistryConfiguration() { - @Override - public void configureRegistry(IConfigRegistry configRegistry) { - configRegistry.registerConfigAttribute( - EditConfigAttributes.CELL_EDITABLE_RULE, - IEditableRule.ALWAYS_EDITABLE); - } - }); - - // Configure the table (lay it out) - natTable.configure(); - natTable.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, - 1)); - - return; - } - */ /** * This operation sets the ListComponent that should be used as input for @@ -462,4 +388,4 @@ public class ListComponentSectionPage extends ICEFormPage { this.source = list.getElementSource(); } -} +} \ No newline at end of file diff --git a/src/org.eclipse.ice.materials.ui/META-INF/MANIFEST.MF b/src/org.eclipse.ice.materials.ui/META-INF/MANIFEST.MF index 06978f594..5f37f4863 100644 --- a/src/org.eclipse.ice.materials.ui/META-INF/MANIFEST.MF +++ b/src/org.eclipse.ice.materials.ui/META-INF/MANIFEST.MF @@ -9,7 +9,9 @@ Require-Bundle: org.eclipse.e4.ui.model.workbench;bundle-version="1.0.1.v2013111 javax.annotation, javax.inject, org.eclipse.e4.ui.workbench;bundle-version="1.0.2", - org.eclipse.ui;bundle-version="3.105.0" + org.eclipse.ui;bundle-version="3.105.0", + org.eclipse.ice.datastructures, + org.eclipse.ice.client.widgets Bundle-RequiredExecutionEnvironment: JavaSE-1.7 Import-Package: javax.inject;version="1.0.0", org.eclipse.core.runtime;version="3.4.0", diff --git a/src/org.eclipse.ice.materials.ui/src/org/eclipse/ice/materials/ui/MaterialDetailsPage.java b/src/org.eclipse.ice.materials.ui/src/org/eclipse/ice/materials/ui/MaterialDetailsPage.java index cd79ff852..094a33685 100644 --- a/src/org.eclipse.ice.materials.ui/src/org/eclipse/ice/materials/ui/MaterialDetailsPage.java +++ b/src/org.eclipse.ice.materials.ui/src/org/eclipse/ice/materials/ui/MaterialDetailsPage.java @@ -12,13 +12,16 @@ *******************************************************************************/ package org.eclipse.ice.materials.ui; +import java.util.ArrayList; + +import org.eclipse.ice.client.widgets.ListComponentNattable; +import org.eclipse.ice.datastructures.ICEObject.ListComponent; import org.eclipse.ice.datastructures.form.Material; import org.eclipse.ice.materials.IMaterialsDatabase; +import org.eclipse.ice.materials.SingleMaterialWritableTableFormat; import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.jface.viewers.ISelection; import org.eclipse.jface.viewers.IStructuredSelection; -import org.eclipse.jface.viewers.TableViewer; -import org.eclipse.jface.viewers.TableViewerColumn; import org.eclipse.swt.SWT; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.events.SelectionListener; @@ -26,14 +29,15 @@ import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Table; -import org.eclipse.swt.widgets.TableColumn; +import org.eclipse.swt.widgets.Display; import org.eclipse.ui.forms.IDetailsPage; import org.eclipse.ui.forms.IFormPart; import org.eclipse.ui.forms.IManagedForm; import org.eclipse.ui.forms.widgets.FormToolkit; import org.eclipse.ui.forms.widgets.Section; +import ca.odell.glazedlists.gui.WritableTableFormat; + /** * This class presents a Material as a table with properties. * @@ -56,12 +60,18 @@ public class MaterialDetailsPage implements IDetailsPage { * The Form that manages this details page */ IManagedForm managedForm; - + /** - * The table viewer that shows the material's properties. + * The list component to hold the data for the NatTable */ - TableViewer tableViewer; + ListComponent list; + + /** + * The section client for the NatTable to draw on + */ + Composite sectionClient; + /** * The constructor * @@ -174,14 +184,44 @@ public class MaterialDetailsPage implements IDetailsPage { Object structuredSelection = ((IStructuredSelection) selection) .getFirstElement(); if (structuredSelection instanceof Material) { - // Set the input to the properties - material = (Material) structuredSelection; - tableViewer.setInput(material.getProperties()); - // Fix the column width - Table table = tableViewer.getTable(); - for (TableColumn column : table.getColumns()) { - column.pack(); + // Creates new table if this is the first selection of a material. + if(material==null){ + material = (Material) structuredSelection; + + //Creates new listComponent for the table data. + list = new ListComponent(); + + //Gets the property names or column names for the table. + ArrayList propertyNames = new ArrayList(); + propertyNames.addAll(material.getProperties().keySet()); + + //Creates new writable table format for the nattable + WritableTableFormat tableFormat = new SingleMaterialWritableTableFormat(material); + + //adds the tableformat to the list + list.setTableFormat(tableFormat); + + //adds the material + list.addAll(propertyNames); + + //makes the NatTable, with the list data and current sectionClient to draw on. + @SuppressWarnings("unused") + ListComponentNattable nattable = new ListComponentNattable(sectionClient, list, false); } + + //updates the material. + material = (Material) structuredSelection; + list.clear(); + //Gets the property names or column names for the table. + ArrayList propertyNames = new ArrayList(); + propertyNames.addAll(material.getProperties().keySet()); + + //adds the new properties to the list. + list.addAll(propertyNames); + + //changes the selected material + SingleMaterialWritableTableFormat format = (SingleMaterialWritableTableFormat)list.getTableFormat(); + format.setMaterial(material); } return; } @@ -213,7 +253,7 @@ public class MaterialDetailsPage implements IDetailsPage { // Create the area in which the block will be rendered - the // "section client" - Composite sectionClient = toolkit.createComposite(section); + sectionClient = toolkit.createComposite(section); // Configure the layout to be greedy. GridLayout gridLayout = new GridLayout(); gridLayout.numColumns = 2; @@ -224,40 +264,35 @@ public class MaterialDetailsPage implements IDetailsPage { sectionClient.setLayoutData(new GridData(GridData.FILL_BOTH)); // Finally tell the section about its client section.setClient(sectionClient); - - // Create a table viewer to display the materials properties - tableViewer = new TableViewer(sectionClient, SWT.BORDER | SWT.H_SCROLL - | SWT.V_SCROLL | SWT.FULL_SELECTION); - - // Create the property name column - TableViewerColumn nameColumn = new TableViewerColumn(tableViewer, - SWT.CENTER); - nameColumn.getColumn().setText("Property"); - nameColumn.getColumn().setToolTipText( - "The name of the material property"); - nameColumn.setLabelProvider(new MaterialCellLabelProvider()); - nameColumn.getColumn().pack(); - // Create the property value column - TableViewerColumn valueColumn = new TableViewerColumn(tableViewer, - SWT.CENTER); - valueColumn.getColumn().setText("Value"); - valueColumn.getColumn().setToolTipText( - "The value of the material property"); - valueColumn.getColumn().pack(); - valueColumn.setLabelProvider(new MaterialCellLabelProvider()); - // Add the columns - String[] names = { "Property", "Value" }; - tableViewer.setColumnProperties(names); - - // Set the content provider and the layout information on the - // tableViewer - tableViewer.setContentProvider(new MaterialPropertyContentProvider()); - Table table = tableViewer.getTable(); - table.setLayout(new GridLayout(1, true)); - table.setLayoutData(new GridData(GridData.FILL_BOTH)); - table.setHeaderVisible(true); - table.setLinesVisible(true); - + + //Sets the sectionClient color to overrule the table's background + sectionClient.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_WHITE)); + sectionClient.setBackgroundMode(SWT.INHERIT_FORCE); + + //checks if the material is null, if so do not create table (nothing to display) + if(material!=null){ + + //Creates new listComponent for the table data. + list = new ListComponent(); + + //Gets the property names or column names for the table. + ArrayList propertyNames = new ArrayList(); + propertyNames.addAll(material.getProperties().keySet()); + + //Creates new writable table format for the nattable + WritableTableFormat tableFormat = new SingleMaterialWritableTableFormat(material); + + //adds the tableformat to the list + list.setTableFormat(tableFormat); + + //adds the material + list.addAll(propertyNames); + + //makes the NatTable, with the list data and current sectionClient to draw on. + @SuppressWarnings("unused") + ListComponentNattable nattable = new ListComponentNattable(sectionClient, list, false); + } + // Add a composite for holding the Add and Delete buttons for adding // or removing properties Composite buttonComposite = new Composite(sectionClient, SWT.NONE); @@ -301,4 +336,4 @@ public class MaterialDetailsPage implements IDetailsPage { return; } -} +} \ No newline at end of file diff --git a/src/org.eclipse.ice.materials/src/org/eclipse/ice/materials/SingleMaterialWritableTableFormat.java b/src/org.eclipse.ice.materials/src/org/eclipse/ice/materials/SingleMaterialWritableTableFormat.java new file mode 100644 index 000000000..71d0ced6c --- /dev/null +++ b/src/org.eclipse.ice.materials/src/org/eclipse/ice/materials/SingleMaterialWritableTableFormat.java @@ -0,0 +1,117 @@ +/******************************************************************************* + * Copyright (c) 2014 UT-Battelle, LLC. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Initial API and implementation and/or initial documentation - + * Kasper Gammeltoft + *******************************************************************************/ +package org.eclipse.ice.materials; + +import org.eclipse.ice.datastructures.form.Material; + +import ca.odell.glazedlists.gui.WritableTableFormat; + + +/** + * This class implements the WritableTableFormat interface for use with a single material. + * This should show all of the material's properties for access in a table format. + * @author Kasper Gammeltoft + * + */ +public class SingleMaterialWritableTableFormat implements WritableTableFormat{ + + /** + * The material to display, needed to access the material's specific properties. + */ + private Material material; + + /** + * Constructor + * @param material The material to keep up with. Must call setMaterial(Material material) each time the material changes!) + */ + public SingleMaterialWritableTableFormat(Material material) { + this.material = material; + + } + + /** + * Sets a new material to display information with. + * @param material The new material + */ + public void setMaterial(Material material){ + this.material = material; + } + + /** + * Returns the total number of columns, just 2 in this case as the material only has properties and values. + */ + @Override + public int getColumnCount() { + return 2; + } + + /** + * Gets the column name, the first column is properties, the second is values. + */ + @Override + public String getColumnName(int arg0) { + String name; + if(arg0==0){ + name = "Property"; + } else { + name = "Value"; + } + return name; + } + + /** + * Gets the value for a specific property. If the col==0, then that is the column holding the + * property strings and the returned object will be that string. If not, then it returns the + * value of Material.getProperty(property) for the current material. + */ + @Override + public Object getColumnValue(String property, int col) { + Object colVal = new Object(); + + if(col==0){ + colVal = property; + } else { + colVal = material.getProperty(property); + } + return colVal; + } + + /** + * Should always return true. + */ + @Override + public boolean isEditable(String arg0, int arg1) { + return true; + } + + + /** + * Sets a new column value. Note- cannot change the value of a property name, so the + * col parameter is not used here. + */ + @Override + public String setColumnValue(String property, Object newVal, int col) { + material.setProperty(property, (Double)newVal); + return null; + } + + + + + + + + + + + +} \ No newline at end of file diff --git a/tests/org.eclipse.ice.client.widgets.test/META-INF/MANIFEST.MF b/tests/org.eclipse.ice.client.widgets.test/META-INF/MANIFEST.MF index 6fe9f9afc..e889b12c1 100644 --- a/tests/org.eclipse.ice.client.widgets.test/META-INF/MANIFEST.MF +++ b/tests/org.eclipse.ice.client.widgets.test/META-INF/MANIFEST.MF @@ -10,4 +10,5 @@ Import-Package: org.eclipse.ice.viz.service, org.junit Require-Bundle: org.eclipse.swtbot.eclipse.core;bundle-version="2.2.1", org.eclipse.swtbot.go;bundle-version="2.2.1", - org.eclipse.swtbot.swt.finder + org.eclipse.swtbot.swt.finder, + org.eclipse.ice.materials diff --git a/tests/org.eclipse.ice.client.widgets.test/src/org/eclipse/ice/client/widgets/test/ListComponentNattableTest.java b/tests/org.eclipse.ice.client.widgets.test/src/org/eclipse/ice/client/widgets/test/ListComponentNattableTest.java new file mode 100644 index 000000000..8033b51f7 --- /dev/null +++ b/tests/org.eclipse.ice.client.widgets.test/src/org/eclipse/ice/client/widgets/test/ListComponentNattableTest.java @@ -0,0 +1,195 @@ +/******************************************************************************* + * Copyright (c) 2014 UT-Battelle, LLC. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Initial API and implementation and/or initial documentation - + * Jay Jay Billings, Kasper Gammeltoft + *******************************************************************************/ +package org.eclipse.ice.client.widgets.test; + +import static org.junit.Assert.*; + +import java.util.ArrayList; + +import org.eclipse.ice.client.widgets.ListComponentNattable; +import org.eclipse.ice.datastructures.ICEObject.ListComponent; +import org.eclipse.ice.datastructures.form.Material; +import org.eclipse.ice.materials.MaterialWritableTableFormat; +import org.eclipse.swt.SWT; +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.layout.GridLayout; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Display; +import org.eclipse.swt.widgets.Shell; +import org.eclipse.ui.PlatformUI; +import org.eclipse.ui.forms.ManagedForm; +import org.eclipse.ui.forms.widgets.FormToolkit; +import org.eclipse.ui.forms.widgets.ScrolledForm; +import org.eclipse.ui.forms.widgets.Section; +import org.junit.Test; + +/** + * Tests the ListComponentNattable class and its methods. + * @author k6g + * + */ +public class ListComponentNattableTest { + + + private static ListComponent list; + private static Shell shell; + private static ListComponentNattable table; + private static Composite sectionClient; + private static Material mat1; + private static Material mat2; + private static Material mat3; + + + /** + * This operation makes sure the Nattable is created correctly with the list data. + */ + @Test + public void testListComponentNattable() { + + Display display; + FormToolkit formToolkit; + ManagedForm eclipseTestForm; + + // Setup the display, form toolkit and test form. The display must be + // retrieve from the Eclipse PlatformUI if it is running or created + // separately if not. + if (!PlatformUI.isWorkbenchRunning()) { + display = new Display(); + } else { + display = PlatformUI.getWorkbench().getDisplay(); + } + eclipseTestForm = new ManagedForm(new Shell(display)); + + formToolkit = new FormToolkit(display); + + + final ScrolledForm scrolledForm = eclipseTestForm.getForm(); + + // Set a GridLayout with a single column. Remove the default margins. + GridLayout layout = new GridLayout(1, true); + layout.marginWidth = 0; + layout.marginHeight = 0; + scrolledForm.getBody().setLayout(layout); + + // Only create something if there is valid input. + + // Get the parent + Composite parent = eclipseTestForm.getForm().getBody(); + + shell = parent.getShell(); + // Create the section and set its layout info + Section listSection = formToolkit.createSection(parent, + Section.TITLE_BAR | Section.DESCRIPTION | Section.TWISTIE + | Section.EXPANDED | Section.COMPACT); + listSection.setLayout(new GridLayout(1, false)); + listSection.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, + true, 1, 1)); + // Create the section client, which is the client area of the + // section that will actually render data. + sectionClient = new Composite(listSection, SWT.FLAT); + sectionClient.setLayout(new GridLayout(2, false)); + sectionClient.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, + true, 1, 1)); + //parent.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_WHITE)); + //listSection.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_WHITE)); + sectionClient.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_WHITE)); + shell.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_WHITE)); + + //create some test materials to put into the table- to provide some sort of data + Material material = new Material(); + material.setName("Mat1"); + material.setProperty("A", 1.0); + material.setProperty("B", 2.0); + mat1 = material; + + Material material2 = new Material(); + material2.setName("Mat2"); + material2.setProperty("A", 5.2); + material2.setProperty("B", 4.1); + mat2 = material2; + + mat3 = new Material(); + mat3.setName("Mat3"); + mat3.setProperty("A", 2.4); + mat3.setProperty("B", .394); + + + ArrayList colNames = new ArrayList(); + colNames.addAll(material.getProperties().keySet()); + + MaterialWritableTableFormat tableFormat = new MaterialWritableTableFormat(colNames); + + //Instantiate the ListComponent to test the Nattable with + list = new ListComponent(); + list.setTableFormat(tableFormat); + list.add(material); + list.add(material2); + + //creates the new Nattable for testing + table = new ListComponentNattable(sectionClient, list, false); + + //assertions for testing + /////////////////////////////////////////////////////////////////////////////////////// + + assertNotNull(table); + + assertEquals(table.getList().getColumnCount(), 3); + + table.getList().clear(); + assertFalse(table.getList().contains(mat1)); + + table.getList().add(mat2); + table.getList().add(mat3); + + assertEquals(table.getList().getColumnValue(mat2, 1), mat2.getProperty("A")); + + } + + @Test + public void testGetSelectedObjects() { + ListComponent setList = new ListComponent(); + setList.add(mat2); + table.setSelection(setList); + ListComponent selected = table.getSelectedObjects(); + assertEquals(selected.get(0), mat2); + + } + /* + @Test + public void testGetBackground() { + assertEquals(table.getBackground(), Display.getCurrent().getSystemColor(SWT.COLOR_WHITE)); + } + */ + + + /* + @Test + public void testSetList() { + fail("Not yet implemented"); + } + */ + + /* + @Test + public void testGetList() { + assertEquals(this.list, table.getList()); + } + */ + + /* + @Test + public void testSetComposite() { + fail("Not yet implemented"); + } + */ + +} \ No newline at end of file -- GitLab From 00a7a69e54ffc76eb885f701e248c408365da1af Mon Sep 17 00:00:00 2001 From: Kasper Gammeltoft Date: Wed, 10 Jun 2015 15:46:43 -0400 Subject: [PATCH 07/18] Fixed bug where the down button on the table would not work properly for multiple selections. Signed-off-by: Kasper Gammeltoft --- .../client/widgets/ListComponentSectionPage.java | 3 +-- utils/ICEDocCleaner/bin/ICEDocCleaner.class | Bin 0 -> 3831 bytes 2 files changed, 1 insertion(+), 2 deletions(-) create mode 100644 utils/ICEDocCleaner/bin/ICEDocCleaner.class diff --git a/src/org.eclipse.ice.client.widgets/src/org/eclipse/ice/client/widgets/ListComponentSectionPage.java b/src/org.eclipse.ice.client.widgets/src/org/eclipse/ice/client/widgets/ListComponentSectionPage.java index 26ef6758e..efb247f17 100644 --- a/src/org.eclipse.ice.client.widgets/src/org/eclipse/ice/client/widgets/ListComponentSectionPage.java +++ b/src/org.eclipse.ice.client.widgets/src/org/eclipse/ice/client/widgets/ListComponentSectionPage.java @@ -349,7 +349,7 @@ public class ListComponentSectionPage extends ICEFormPage { Object toMove = list.get(0); //overrides the list entries to move the selected rows up by one row - for(int i=0; i=0; i--){ index = list.indexOf(selected.get(i))+1; toMove = list.get(index); list.set(index, selected.get(i)); @@ -365,7 +365,6 @@ public class ListComponentSectionPage extends ICEFormPage { table.setSelection(selected); } - } } } diff --git a/utils/ICEDocCleaner/bin/ICEDocCleaner.class b/utils/ICEDocCleaner/bin/ICEDocCleaner.class new file mode 100644 index 0000000000000000000000000000000000000000..8076224ea0c75543222f68c6ca36d5033373e48b GIT binary patch literal 3831 zcma)9YjhlC8GgQY)0v%4Ti8;{mI9lCkfhl}ODVWpV(B)ufm~|Rq-<%elif+O?Pg}# zoo&-n6)UYM-tVcXAZQh}kgA(XgsNyk5XB2#P|!bmj{fi$$3H6Zd1p7t#;hJs&YAtb z_kF+je#^73J^mzs>+weoixif1B-*#RsYKSc96PTepm5Ov>yXu&wVdJBp1}il%2Qaf zIpbu!Hig9vjROjSgqyYvEJn~o9hNAp=*&2FcX4#k&hN4Yv$jI0(@j~~0V|)8dj%Nq zMluDVo+mU;hND)-QMk0>j?OvZeO^A}497*F(LR>4b6&=E3K~KRD}Abr+uG4HiwWWq zT&iK!JOlcU6g+#>#A;kd<=rA}SydLn$2-a2qZHd3jq6xLRJ-HZ`N&W)n~e-*vUbk$ zMq&{IYjLH9E2_j+y)(Nq83^+M^qM6 z!N1**YOx*M*s3^ z|0G7Ne4l-1(RNaHym60)%?jp>C$=*L2I6QFg&Br8wwSmDTbYlPTJXq>`M5_A+f20k zh)h9V>3Fk3y__OLZqZ3MM+WWTjN>q$A}L9A9$H#jG;}Det`=A2Edx7nn@H|dxOmQ0 z!jz8E&`q%awCH8Bt$iuWVFBsbsZiIyYkTx216}Bq_k9XYbMLDp#25OsaX?4E0yONN z(abNzaxH8vX0pr|0|N-^*rRaW-a^yfCVn>8N28Gj-^gROlWvUmcXdY7ZYmOuwh=7> z+G}DT-pWiJwY=1bP3P6j)IB=hrjYnQ8UHW2ItCT4B%{{Wd8!o)c0QV72O&yFn$^8! z*rx9+&ra(YQdmmmBc2<%m3>GwA2E@^0cw88$``WRP)Z`x)auQ+4wj9rf6O<0jrMowqKPbql_* z<5CAFO}s}WYQwg-lif?ldue=&c=0|H@5cuyBWo4B4kvAoi6?93K!?zO$i#>75rtr( zI9Tv&SsHXlM-4yg_!v9E{z2=YJp6<_{G_n1MJrl<+QhhDt!X=Jdwz|7#>D;jEJNeD zqPK{u2y$rs5R0x=;BgI~XM6MOZWfVnb4Pmo=@7(&cu2z+6e9CU`aH`?Tlw@Hsfma2 zMK-M7_MM%#B-;14-`>%;tD~EJV_i7`X4x-%%LtstS2TQiW+cqgN_Sw2Jc6&%At~ym zkgVj`ERAo+f5`A*mEku_IH&APa?hfCdL3U^h$YyjJ!x!%R_b81nDZwWn_HyeaE5cN z?Ba;)L<+@J$}SW*-6GPo8x0MQ)|g4V^BE374HF#Vz7y$xF{=zW@EC40a0cI$*7mJ= zQ>0AcPmwd2G;vM_W8Golr{i&jwLORIyj(?FH=kigw#tK+>I%=}I-X!x-I;eq(MZZ2 z%}IXLOU|4(@m)!Hvuse0(@q<7e4oQ9;TE&$h~s)R-AR}2H=ytX6U(uJfw1z!Yi(#+i8<#eBiuATv`)k1l8 zP{T4+^*|w~MFsZJ3WJ5iKvc~7L)sjo#Wqwd<8eRz^ zH$&!q>R^|Z^OrXb7c{&)lkdJ7yGHWv;qta;^tr`+$}YPiG;h0W5g&2u;H>7_2`u7? zJ0rguZ>{|0xIKHD8cc{q-zX zhQcLWK85<^6s}I5#p@=~IEm)Y^(C}+HHWS*;f8SpCZ-TiHc#T_?&t;eNVJ4EjjM7qj&F-RR0($!etn+`*$MkUE0{AK6UEw-85q(csKVJ(>8&8DpE#ZBe zeBI@`c$HSd2P+DEl%fSFu#cCOiRt33uugBqg5jX}3jXh>c9ZgyKu!goz~_>S&*Fi; zbNJG3>M2%*zDAP-ePYHc#^ns-@|d{u>?FPsGr~rAiEnU8jQh42XNU<#2~z_3jzGxb z$bOC6X%H=ZN@6~6p4U;d4o zz^h2&@7RlfU>}opzpCTjWN_tKhP^68*lNPo5>^jeHFK>Qz=*PtQL@Uo$f}dvOCCT@ zO>iTbLS8+Ef_es?dLD<>ix^Wc;i!5Ucd0*dXZQ>5_G{rNtAJUKAL0USU87#W(|CrS zxJo^TAK_Wn#Rhebn*NwR=~4ILdHjS`(yQ*pPw@iFu3w$N&+v0rOAhzo7kr^nw=?)9 zUgT+juwN0TQ_my#HMs<-T_b*j-_pY`QR1Um@h>!LsMoM*n!eCA{H}b{z|p)zLzf2b z#+!hR;m|ZzL90mtrQ!F}G$~jcO)N`&n)dvc_Xq}GLl?PhqTqjGpN2Ej> Date: Mon, 15 Jun 2015 11:55:36 -0400 Subject: [PATCH 08/18] Fixed layout bug in MaterialsDatabase Editor to allow for the tree to scroll just in the treeview rather than scrolling in the entire section along with the details page. Signed-off-by: Kasper Gammeltoft --- src/org.eclipse.ice.materials.ui/META-INF/MANIFEST.MF | 3 ++- .../ui/MaterialsDatabaseMasterDetailsBlock.java | 9 ++++++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/org.eclipse.ice.materials.ui/META-INF/MANIFEST.MF b/src/org.eclipse.ice.materials.ui/META-INF/MANIFEST.MF index 5f37f4863..48af83874 100644 --- a/src/org.eclipse.ice.materials.ui/META-INF/MANIFEST.MF +++ b/src/org.eclipse.ice.materials.ui/META-INF/MANIFEST.MF @@ -11,7 +11,8 @@ Require-Bundle: org.eclipse.e4.ui.model.workbench;bundle-version="1.0.1.v2013111 org.eclipse.e4.ui.workbench;bundle-version="1.0.2", org.eclipse.ui;bundle-version="3.105.0", org.eclipse.ice.datastructures, - org.eclipse.ice.client.widgets + org.eclipse.ice.client.widgets, + org.eclipse.jface Bundle-RequiredExecutionEnvironment: JavaSE-1.7 Import-Package: javax.inject;version="1.0.0", org.eclipse.core.runtime;version="3.4.0", diff --git a/src/org.eclipse.ice.materials.ui/src/org/eclipse/ice/materials/ui/MaterialsDatabaseMasterDetailsBlock.java b/src/org.eclipse.ice.materials.ui/src/org/eclipse/ice/materials/ui/MaterialsDatabaseMasterDetailsBlock.java index 3e5308a98..8313f42be 100644 --- a/src/org.eclipse.ice.materials.ui/src/org/eclipse/ice/materials/ui/MaterialsDatabaseMasterDetailsBlock.java +++ b/src/org.eclipse.ice.materials.ui/src/org/eclipse/ice/materials/ui/MaterialsDatabaseMasterDetailsBlock.java @@ -37,6 +37,7 @@ import org.eclipse.ui.forms.IManagedForm; import org.eclipse.ui.forms.MasterDetailsBlock; import org.eclipse.ui.forms.SectionPart; import org.eclipse.ui.forms.widgets.FormToolkit; +import org.eclipse.ui.forms.widgets.ScrolledForm; import org.eclipse.ui.forms.widgets.Section; /** @@ -121,7 +122,13 @@ public class MaterialsDatabaseMasterDetailsBlock extends MasterDetailsBlock { // Set the input and layout information on the treeViewer treeViewer.setInput(materialsDatabase.getMaterials()); treeViewer.getTree().setLayout(new GridLayout(1, true)); - treeViewer.getTree().setLayoutData(new GridData(GridData.FILL_BOTH)); + + //Sets the gridData to grab the availiable space, but to have only the treeview have the scrolling. + //This allows for the master tree to scroll without moving the details page out of the viewport. + GridData data = new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1); + data.widthHint = sectionClient.getClientArea().width; + data.heightHint = sectionClient.getClientArea().height; + treeViewer.getTree().setLayoutData(data); // Add a listener to notify the managed form when a selection is made so // that its details can be presented. -- GitLab From c219df53509b6aa07feaa6169a97c2eadcee50b3 Mon Sep 17 00:00:00 2001 From: Kasper Gammeltoft Date: Mon, 15 Jun 2015 13:57:12 -0400 Subject: [PATCH 09/18] Fixed the Materials Database Editor to allow the user to edit the selected material's properties. Signed-off-by: Kasper Gammeltoft --- .../eclipse/ice/materials/ui/MaterialDetailsPage.java | 4 ++-- .../materials/SingleMaterialWritableTableFormat.java | 10 +++++++++- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/src/org.eclipse.ice.materials.ui/src/org/eclipse/ice/materials/ui/MaterialDetailsPage.java b/src/org.eclipse.ice.materials.ui/src/org/eclipse/ice/materials/ui/MaterialDetailsPage.java index 094a33685..4086575bb 100644 --- a/src/org.eclipse.ice.materials.ui/src/org/eclipse/ice/materials/ui/MaterialDetailsPage.java +++ b/src/org.eclipse.ice.materials.ui/src/org/eclipse/ice/materials/ui/MaterialDetailsPage.java @@ -206,7 +206,7 @@ public class MaterialDetailsPage implements IDetailsPage { //makes the NatTable, with the list data and current sectionClient to draw on. @SuppressWarnings("unused") - ListComponentNattable nattable = new ListComponentNattable(sectionClient, list, false); + ListComponentNattable nattable = new ListComponentNattable(sectionClient, list, true); } //updates the material. @@ -290,7 +290,7 @@ public class MaterialDetailsPage implements IDetailsPage { //makes the NatTable, with the list data and current sectionClient to draw on. @SuppressWarnings("unused") - ListComponentNattable nattable = new ListComponentNattable(sectionClient, list, false); + ListComponentNattable nattable = new ListComponentNattable(sectionClient, list, true); } // Add a composite for holding the Add and Delete buttons for adding diff --git a/src/org.eclipse.ice.materials/src/org/eclipse/ice/materials/SingleMaterialWritableTableFormat.java b/src/org.eclipse.ice.materials/src/org/eclipse/ice/materials/SingleMaterialWritableTableFormat.java index 71d0ced6c..d333fd2a0 100644 --- a/src/org.eclipse.ice.materials/src/org/eclipse/ice/materials/SingleMaterialWritableTableFormat.java +++ b/src/org.eclipse.ice.materials/src/org/eclipse/ice/materials/SingleMaterialWritableTableFormat.java @@ -100,7 +100,15 @@ public class SingleMaterialWritableTableFormat implements WritableTableFormat Date: Mon, 15 Jun 2015 15:43:27 -0400 Subject: [PATCH 10/18] Commiting small changes. Signed-off-by: Kasper Gammeltoft --- .../ice/materials/ui/MaterialsDatabaseMasterDetailsBlock.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/org.eclipse.ice.materials.ui/src/org/eclipse/ice/materials/ui/MaterialsDatabaseMasterDetailsBlock.java b/src/org.eclipse.ice.materials.ui/src/org/eclipse/ice/materials/ui/MaterialsDatabaseMasterDetailsBlock.java index 8313f42be..cdad08582 100644 --- a/src/org.eclipse.ice.materials.ui/src/org/eclipse/ice/materials/ui/MaterialsDatabaseMasterDetailsBlock.java +++ b/src/org.eclipse.ice.materials.ui/src/org/eclipse/ice/materials/ui/MaterialsDatabaseMasterDetailsBlock.java @@ -12,6 +12,8 @@ *******************************************************************************/ package org.eclipse.ice.materials.ui; +import java.util.List; + import org.eclipse.core.runtime.Platform; import org.eclipse.e4.ui.workbench.IWorkbench; import org.eclipse.ice.datastructures.form.Material; @@ -120,6 +122,8 @@ public class MaterialsDatabaseMasterDetailsBlock extends MasterDetailsBlock { treeViewer.setLabelProvider(new MaterialsDatabaseLabelProvider()); // Set the input and layout information on the treeViewer + List materials = materialsDatabase.getMaterials(); + treeViewer.setInput(materialsDatabase.getMaterials()); treeViewer.getTree().setLayout(new GridLayout(1, true)); -- GitLab From 819d334596ef2d39374b181529cd24fdf7d84a27 Mon Sep 17 00:00:00 2001 From: Kasper Gammeltoft Date: Mon, 15 Jun 2015 18:04:51 -0400 Subject: [PATCH 11/18] Added search filter for the add material dialog. Signed-off-by: Kasper Gammeltoft --- .../client/widgets/ElementSourceDialog.java | 96 ++++++++++++++++--- 1 file changed, 81 insertions(+), 15 deletions(-) diff --git a/src/org.eclipse.ice.client.widgets/src/org/eclipse/ice/client/widgets/ElementSourceDialog.java b/src/org.eclipse.ice.client.widgets/src/org/eclipse/ice/client/widgets/ElementSourceDialog.java index 431014c01..5aa8c3024 100644 --- a/src/org.eclipse.ice.client.widgets/src/org/eclipse/ice/client/widgets/ElementSourceDialog.java +++ b/src/org.eclipse.ice.client.widgets/src/org/eclipse/ice/client/widgets/ElementSourceDialog.java @@ -20,12 +20,15 @@ import org.eclipse.ice.datastructures.form.Material; import org.eclipse.jface.dialogs.Dialog; import org.eclipse.jface.layout.GridDataFactory; import org.eclipse.swt.SWT; +import org.eclipse.swt.events.ModifyEvent; +import org.eclipse.swt.events.ModifyListener; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Shell; +import org.eclipse.swt.widgets.Text; import ca.odell.glazedlists.EventList; import ca.odell.glazedlists.gui.WritableTableFormat; @@ -45,6 +48,12 @@ public class ElementSourceDialog extends Dialog { * The source that should be drawn */ private IElementSource source; + + + /** + * The list of the data for the table to display + */ + private ListComponent list; /** * The NatTable that shows the list @@ -73,6 +82,18 @@ public class ElementSourceDialog extends Dialog { IElementSource elementSource) { super(parentShell); source = elementSource; + //Create the list component from source + list = new ListComponent(); + list.setTableFormat((WritableTableFormat) source.getTableFormat()); + elements = source.getElements(); + list.addAll(elements); + + //Sorts the list according to the material names + Collections.sort(list, new Comparator() { + public int compare(Object first, Object second) { + return ((Material)first).getName().compareTo(((Material)second).getName()); + } + }); } /* @@ -82,7 +103,6 @@ public class ElementSourceDialog extends Dialog { * org.eclipse.jface.dialogs.Dialog#createDialogArea(org.eclipse.swt.widgets * .Composite) */ - @SuppressWarnings({ "unchecked", "rawtypes" }) @Override protected Control createDialogArea(Composite parent) { @@ -93,24 +113,20 @@ public class ElementSourceDialog extends Dialog { //Set the background to white (visible on the borders) comp.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_WHITE)); - //Get the source's elements to convert to a ListComponent - elements = source.getElements(); + //Add filter to the Dialog to filter the table results + final Text filter = new Text(comp, SWT.BORDER | SWT.SEARCH); + filter.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false, 1, 1)); - //Create the list component from source - ListComponent list = new ListComponent(); - list.setTableFormat((WritableTableFormat) source.getTableFormat()); - list.addAll(elements); - - //Sorts the list according to the material names - Collections.sort(list, new Comparator() { - public int compare(Object first, Object second) { - return ((Material)first).getName().compareTo(((Material)second).getName()); - } - }); + //Get a copy of the list to give to the NatTable so that we can keep a fresh copy to compare to. + ListComponent copy = new ListComponent(); + copy.setTableFormat(list.getTableFormat()); + for(int i=0; i extends Dialog { select.add(list.get(0)); listTable.setSelection(select); + //Add a modify listener to filter the table as the user types in the filter. + filter.addModifyListener(new ModifyListener() { + + @Override + public void modifyText(ModifyEvent arg0) { + ListComponent listFromTable = listTable.getList(); + //Get the filter text + String filterText = filter.getText().toLowerCase(); + + //Iterate over the list and pick the items to keep from the filter text. + int numRemoved = 0; + for(int i=0; i Date: Tue, 16 Jun 2015 11:28:20 -0400 Subject: [PATCH 12/18] Implemented the add and delete buttons for the materials database properties inspector. Now able to add and delete properties for any material. Minor fixes. Implemented a removeProperty function for the Material class. Signed-off-by: Kasper Gammeltoft --- .../client/widgets/ElementSourceDialog.java | 28 +--- .../widgets/ListComponentSectionPage.java | 5 +- .../ice/datastructures/form/Material.java | 11 ++ .../ice/materials/ui/AddPropertyDialog.java | 144 ++++++++++++++++++ .../ice/materials/ui/MaterialDetailsPage.java | 131 +++++++++++----- 5 files changed, 260 insertions(+), 59 deletions(-) create mode 100644 src/org.eclipse.ice.materials.ui/src/org/eclipse/ice/materials/ui/AddPropertyDialog.java diff --git a/src/org.eclipse.ice.client.widgets/src/org/eclipse/ice/client/widgets/ElementSourceDialog.java b/src/org.eclipse.ice.client.widgets/src/org/eclipse/ice/client/widgets/ElementSourceDialog.java index 5aa8c3024..b225767ba 100644 --- a/src/org.eclipse.ice.client.widgets/src/org/eclipse/ice/client/widgets/ElementSourceDialog.java +++ b/src/org.eclipse.ice.client.widgets/src/org/eclipse/ice/client/widgets/ElementSourceDialog.java @@ -37,9 +37,8 @@ import ca.odell.glazedlists.gui.WritableTableFormat; * This class is a JFace Dialog for rendering IElementSources that are used by * ListComponents. * - * Only single selections are supported. * - * @author Jay Jay Billings, Kasper Gammeltoft + * @author Jay Jay Billings * */ public class ElementSourceDialog extends Dialog { @@ -83,13 +82,13 @@ public class ElementSourceDialog extends Dialog { super(parentShell); source = elementSource; //Create the list component from source - list = new ListComponent(); - list.setTableFormat((WritableTableFormat) source.getTableFormat()); + list = new ListComponent(); + list.setTableFormat((WritableTableFormat) source.getTableFormat()); elements = source.getElements(); list.addAll(elements); //Sorts the list according to the material names - Collections.sort(list, new Comparator() { + Collections.sort(list, new Comparator() { public int compare(Object first, Object second) { return ((Material)first).getName().compareTo(((Material)second).getName()); } @@ -118,7 +117,7 @@ public class ElementSourceDialog extends Dialog { filter.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false, 1, 1)); //Get a copy of the list to give to the NatTable so that we can keep a fresh copy to compare to. - ListComponent copy = new ListComponent(); + ListComponent copy = new ListComponent(); copy.setTableFormat(list.getTableFormat()); for(int i=0; i extends Dialog { GridDataFactory.fillDefaults().grab(true, true).applyTo(listTable.getTable()); //Selects the first component by default - ListComponent select = new ListComponent(); + ListComponent select = new ListComponent(); select.add(list.get(0)); listTable.setSelection(select); @@ -181,14 +180,7 @@ public class ElementSourceDialog extends Dialog { //Unlock the list listFromTable.getReadWriteLock().writeLock().unlock(); } - - - //listTable.setList(newList); - - //listTable.getTable().refresh(); - } - }); return comp; @@ -214,12 +206,8 @@ public class ElementSourceDialog extends Dialog { */ @Override protected void okPressed() { - // Set the selection if the OK button was pressed - /** - int index = listTable.getSelectionIndex(); - selection = elements.get(index); - */ - //Sets the selection, will be the first selected object if there are multiple selections. + + //Sets the selection if OK is pressed, will be the first selected object if there are multiple selections. selection = (T) listTable.getSelectedObjects().get(0); super.okPressed(); } diff --git a/src/org.eclipse.ice.client.widgets/src/org/eclipse/ice/client/widgets/ListComponentSectionPage.java b/src/org.eclipse.ice.client.widgets/src/org/eclipse/ice/client/widgets/ListComponentSectionPage.java index efb247f17..e45852b81 100644 --- a/src/org.eclipse.ice.client.widgets/src/org/eclipse/ice/client/widgets/ListComponentSectionPage.java +++ b/src/org.eclipse.ice.client.widgets/src/org/eclipse/ice/client/widgets/ListComponentSectionPage.java @@ -141,8 +141,7 @@ public class ListComponentSectionPage extends ICEFormPage { sectionClient.setLayout(new GridLayout(2, false)); sectionClient.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1)); - //parent.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_WHITE)); - //listSection.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_WHITE)); + sectionClient.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_WHITE)); shell.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_WHITE)); // Draw the table @@ -269,7 +268,7 @@ public class ListComponentSectionPage extends ICEFormPage { //Move up button, moves the selected rows up one index. Button moveUpButton = new Button(listButtonComposite, SWT.PUSH); - moveUpButton.setText("ʌ"); + moveUpButton.setText("^"); moveUpButton.addSelectionListener(new SelectionListener() { @Override public void widgetDefaultSelected(SelectionEvent arg0) { diff --git a/src/org.eclipse.ice.datastructures/src/org/eclipse/ice/datastructures/form/Material.java b/src/org.eclipse.ice.datastructures/src/org/eclipse/ice/datastructures/form/Material.java index f0bc83e88..e186131c7 100644 --- a/src/org.eclipse.ice.datastructures/src/org/eclipse/ice/datastructures/form/Material.java +++ b/src/org.eclipse.ice.datastructures/src/org/eclipse/ice/datastructures/form/Material.java @@ -143,6 +143,17 @@ public class Material implements Cloneable { public void setProperty(String key, double value) { properties.put(key, value); } + + /** + * This operation removes a property from the material's properties list. + * @param key + * The name of the property that should be removed. + */ + public void removeProperty(String key){ + if(properties.containsKey(key)){ + properties.remove(key); + } + } /** * This operation returns the full set of properties for this material. diff --git a/src/org.eclipse.ice.materials.ui/src/org/eclipse/ice/materials/ui/AddPropertyDialog.java b/src/org.eclipse.ice.materials.ui/src/org/eclipse/ice/materials/ui/AddPropertyDialog.java new file mode 100644 index 000000000..cb295e48f --- /dev/null +++ b/src/org.eclipse.ice.materials.ui/src/org/eclipse/ice/materials/ui/AddPropertyDialog.java @@ -0,0 +1,144 @@ +package org.eclipse.ice.materials.ui; + +import org.eclipse.jface.dialogs.Dialog; +import org.eclipse.jface.window.IShellProvider; +import org.eclipse.swt.SWT; +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.layout.GridLayout; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.swt.widgets.Label; +import org.eclipse.swt.widgets.Shell; +import org.eclipse.swt.widgets.Text; + +/** + * This is a JFace Dialog for adding properties to materials in the materials Database. + * It has two text fields: A name for the property and a value for the property that should be + * a String and a double, respectively. + * + * + * @author Kasper Gammeltoft + * + */ +public class AddPropertyDialog extends Dialog { + + + /** + * The material property to return after the dialog closes. + */ + MaterialProperty newProperty; + + /** + * Text field for holding the name of the property to be added. + */ + Text nameText; + + + /** + * Text field for holding the value of the property to be added. + */ + Text valueText; + + + /** + * The constructor. Creates a new Dialog for adding properties to materials. + * @param parentShell + */ + public AddPropertyDialog(Shell parentShell) { + super(parentShell); + newProperty = new MaterialProperty(); + + } + + + /* + * (non-Javadoc) + * + * @see + * org.eclipse.jface.dialogs.Dialog#createDialogArea(org.eclipse.swt.widgets + * .Composite) + */ + @Override + protected Control createDialogArea(Composite parent) { + //Create the composite to hold the text fields and labels + Composite comp = (Composite) super.createDialogArea(parent); + comp.setLayout(new GridLayout(2, false)); + comp.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1)); + + //Create property name composite for storing that input + Composite propertyName = new Composite(comp, SWT.NONE); + propertyName.setLayout(new GridLayout(2, false)); + propertyName.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false, 1, 1)); + + //The label for the property's name input + Label nameLbl = new Label(propertyName, SWT.NONE); + nameLbl.setText("Property: "); + + //The text field for the property's name + nameText = new Text(propertyName, SWT.BORDER | SWT.LEAD); + + //Create the property value composite for storing that input + Composite propertyValue = new Composite(comp, SWT.NONE); + propertyValue.setLayout(new GridLayout(2, false)); + propertyValue.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false, 1, 1)); + + //The label for the property's value input + Label valLbl = new Label(propertyValue, SWT.NONE); + valLbl.setText("Value: "); + + //The text field for the property's value + valueText = new Text(propertyValue, SWT.BORDER | SWT.LEAD); + + return comp; + } + + + /* + * (non-Javadoc) + * @see org.eclipse.jface.window.Window#configureShell(org.eclipse.swt.widgets.Shell) + */ + @Override + protected void configureShell(Shell shell){ + super.configureShell(shell); + shell.setText("Add Property"); + } + + + /* + * (non-Javadoc) + * + * @see org.eclipse.jface.dialogs.Dialog#okPressed() + */ + @Override + protected void okPressed() { + + //Locks the current values in the text fields into a MaterialProperty to add to the database. + + //Gets the text for the name. + newProperty.key = nameText.getText(); + + //Gets the text for the value. + String val = valueText.getText(); + double dVal = 0.0; + + //If the text for the value is a number, will set that number as the value. Otherwise it will be zero + try{ + dVal = Double.parseDouble(val); + } catch(Exception e){ + e.printStackTrace(); + } + newProperty.value = dVal; + super.okPressed(); + } + + /** + * Returns the new material property. + * @return + * The material property that was created by this dialog to be added to a material. + */ + public MaterialProperty getSelection() { + return newProperty; + } + + +} diff --git a/src/org.eclipse.ice.materials.ui/src/org/eclipse/ice/materials/ui/MaterialDetailsPage.java b/src/org.eclipse.ice.materials.ui/src/org/eclipse/ice/materials/ui/MaterialDetailsPage.java index 4086575bb..d41c43444 100644 --- a/src/org.eclipse.ice.materials.ui/src/org/eclipse/ice/materials/ui/MaterialDetailsPage.java +++ b/src/org.eclipse.ice.materials.ui/src/org/eclipse/ice/materials/ui/MaterialDetailsPage.java @@ -22,6 +22,8 @@ import org.eclipse.ice.materials.SingleMaterialWritableTableFormat; import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.jface.viewers.ISelection; import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.jface.viewers.StructuredSelection; +import org.eclipse.jface.window.Window; import org.eclipse.swt.SWT; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.events.SelectionListener; @@ -30,6 +32,7 @@ import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Display; +import org.eclipse.swt.widgets.Shell; import org.eclipse.ui.forms.IDetailsPage; import org.eclipse.ui.forms.IFormPart; import org.eclipse.ui.forms.IManagedForm; @@ -66,12 +69,23 @@ public class MaterialDetailsPage implements IDetailsPage { */ ListComponent list; + + /** + * The table to display the material's properties + */ + ListComponentNattable natTable; + /** * The section client for the NatTable to draw on */ Composite sectionClient; + /** + * The shell to use for opening the add property dialog + */ + Shell shell; + /** * The constructor * @@ -184,9 +198,12 @@ public class MaterialDetailsPage implements IDetailsPage { Object structuredSelection = ((IStructuredSelection) selection) .getFirstElement(); if (structuredSelection instanceof Material) { + + //updates the material to the new selection + material = (Material) structuredSelection; + // Creates new table if this is the first selection of a material. - if(material==null){ - material = (Material) structuredSelection; + if(natTable==null){ //Creates new listComponent for the table data. list = new ListComponent(); @@ -205,12 +222,9 @@ public class MaterialDetailsPage implements IDetailsPage { list.addAll(propertyNames); //makes the NatTable, with the list data and current sectionClient to draw on. - @SuppressWarnings("unused") - ListComponentNattable nattable = new ListComponentNattable(sectionClient, list, true); + natTable = new ListComponentNattable(sectionClient, list, true); } - //updates the material. - material = (Material) structuredSelection; list.clear(); //Gets the property names or column names for the table. ArrayList propertyNames = new ArrayList(); @@ -235,7 +249,9 @@ public class MaterialDetailsPage implements IDetailsPage { */ @Override public void createContents(Composite parent) { - + //Get the shell for the add property dialog + shell = parent.getShell(); + // Set the layout for the parent GridLayout parentGridLayout = new GridLayout(1, true); parent.setLayout(parentGridLayout); @@ -269,36 +285,16 @@ public class MaterialDetailsPage implements IDetailsPage { sectionClient.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_WHITE)); sectionClient.setBackgroundMode(SWT.INHERIT_FORCE); - //checks if the material is null, if so do not create table (nothing to display) - if(material!=null){ - - //Creates new listComponent for the table data. - list = new ListComponent(); - - //Gets the property names or column names for the table. - ArrayList propertyNames = new ArrayList(); - propertyNames.addAll(material.getProperties().keySet()); - - //Creates new writable table format for the nattable - WritableTableFormat tableFormat = new SingleMaterialWritableTableFormat(material); - - //adds the tableformat to the list - list.setTableFormat(tableFormat); - - //adds the material - list.addAll(propertyNames); - - //makes the NatTable, with the list data and current sectionClient to draw on. - @SuppressWarnings("unused") - ListComponentNattable nattable = new ListComponentNattable(sectionClient, list, true); - } - // Add a composite for holding the Add and Delete buttons for adding // or removing properties Composite buttonComposite = new Composite(sectionClient, SWT.NONE); buttonComposite.setLayout(new GridLayout(1, false)); buttonComposite.setLayoutData(new GridData(SWT.RIGHT, SWT.FILL, false, true, 1, 1)); + + + /* + // Create a listener that will throw up an error message since the Add // and Delete operations are not yet supported. The error message is // just a simple JFace message dialog that is opened when either button @@ -320,18 +316,81 @@ public class MaterialDetailsPage implements IDetailsPage { dialog.open(); } }; + + + */ + // Create the Add button Button addMaterialButton = new Button(buttonComposite, SWT.PUSH); addMaterialButton.setText("Add"); - // Set the error listener for now until the delete operation is + addMaterialButton.addSelectionListener(new SelectionListener(){ + + @Override + public void widgetSelected(SelectionEvent arg0) { + //Opens the new dialog to create a property + AddPropertyDialog dialog = new AddPropertyDialog(shell); + if (dialog.open() == Window.OK) { + //Sets the new property + MaterialProperty newProperty = dialog.getSelection(); + material.setProperty(newProperty.key, newProperty.value); + + // Lock the list to avoid concurrent modifications + list.getReadWriteLock().writeLock().lock(); + try { + //Adds the new property to the list so that it will update on screen for the user. + list.add(newProperty.key); + } finally { + // Unlock the list + list.getReadWriteLock().writeLock().unlock(); + } + } + } + + @Override + public void widgetDefaultSelected(SelectionEvent arg0) { + } + + }); + + + // Set the error listener for now until the add operation is // supported. - addMaterialButton.addSelectionListener(errorListener); + //addMaterialButton.addSelectionListener(errorListener); // Create the Delete button + + //Create the delete button for removing material properties. Button deleteMaterialButton = new Button(buttonComposite, SWT.PUSH); deleteMaterialButton.setText("Delete"); - // Set the error listener for now until the delete operation is - // supported - deleteMaterialButton.addSelectionListener(errorListener); + deleteMaterialButton.addSelectionListener(new SelectionListener(){ + + @Override + public void widgetSelected(SelectionEvent arg0) { + + //gets the selected property + String property = (String)natTable.getSelectedObjects().get(0); + + //Removes the property from the material. + material.removeProperty(property); + + //Finally, removes the property string from the list so that it will + //update on screen for the user. + //Lock the list to avoid concurrent modifications + list.getReadWriteLock().writeLock().lock(); + try{ + //remove the property + list.remove(property); + } finally{ + //unlock the list + list.getReadWriteLock().writeLock().unlock(); + } + } + + @Override + public void widgetDefaultSelected(SelectionEvent arg0) { + + } + + }); return; } -- GitLab From 1483b6a1795b3677120267a85242b2ec4505d57b Mon Sep 17 00:00:00 2001 From: Kasper Gammeltoft Date: Tue, 16 Jun 2015 12:01:58 -0400 Subject: [PATCH 13/18] Fixed bug where NatTable would crash in the reflectivity model when trying to set values that were not doubles. Added search filter to Materials Database and a sort algorithm so that the database tree is much more user friendly. Signed-off-by: Kasper Gammeltoft --- .../MaterialsDatabaseMasterDetailsBlock.java | 86 ++++++++++++++++++- .../MaterialWritableTableFormat.java | 4 + 2 files changed, 86 insertions(+), 4 deletions(-) diff --git a/src/org.eclipse.ice.materials.ui/src/org/eclipse/ice/materials/ui/MaterialsDatabaseMasterDetailsBlock.java b/src/org.eclipse.ice.materials.ui/src/org/eclipse/ice/materials/ui/MaterialsDatabaseMasterDetailsBlock.java index cdad08582..9c8e37110 100644 --- a/src/org.eclipse.ice.materials.ui/src/org/eclipse/ice/materials/ui/MaterialsDatabaseMasterDetailsBlock.java +++ b/src/org.eclipse.ice.materials.ui/src/org/eclipse/ice/materials/ui/MaterialsDatabaseMasterDetailsBlock.java @@ -12,10 +12,14 @@ *******************************************************************************/ package org.eclipse.ice.materials.ui; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; import java.util.List; import org.eclipse.core.runtime.Platform; import org.eclipse.e4.ui.workbench.IWorkbench; +import org.eclipse.ice.datastructures.ICEObject.ListComponent; import org.eclipse.ice.datastructures.form.Material; import org.eclipse.ice.materials.IMaterialsDatabase; import org.eclipse.jface.dialogs.MessageDialog; @@ -26,12 +30,15 @@ import org.eclipse.jface.viewers.TreeViewer; import org.eclipse.jface.wizard.Wizard; import org.eclipse.jface.wizard.WizardDialog; import org.eclipse.swt.SWT; +import org.eclipse.swt.events.ModifyEvent; +import org.eclipse.swt.events.ModifyListener; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.events.SelectionListener; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Text; import org.eclipse.ui.IWorkbenchWindow; import org.eclipse.ui.PlatformUI; import org.eclipse.ui.forms.DetailsPart; @@ -57,10 +64,20 @@ public class MaterialsDatabaseMasterDetailsBlock extends MasterDetailsBlock { */ IMaterialsDatabase materialsDatabase; + /** + * The list that holds the materials database information. + */ + List materials; + /** * The managed form for the block. */ IManagedForm mForm; + + /** + * The tree viewer for displaying the materials + */ + TreeViewer treeViewer; /** * The constructor @@ -115,16 +132,77 @@ public class MaterialsDatabaseMasterDetailsBlock extends MasterDetailsBlock { // the managed form to publish events. final SectionPart sectionPart = new SectionPart(section); mForm.addPart(sectionPart); + + // Create a composite to hold the tree viewer and the filter text + Composite treeComp = new Composite(sectionClient, SWT.NONE); + treeComp.setLayout(new GridLayout(1, false)); + treeComp.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1)); + + //Add filter to the Dialog to filter the table results + final Text filter = new Text(treeComp, SWT.BORDER | SWT.SEARCH); + filter.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false, 1, 1)); // Create the tree viewer that shows the contents of the database - TreeViewer treeViewer = new TreeViewer(sectionClient); + treeViewer = new TreeViewer(treeComp); treeViewer.setContentProvider(new MaterialsDatabaseContentProvider()); treeViewer.setLabelProvider(new MaterialsDatabaseLabelProvider()); - // Set the input and layout information on the treeViewer - List materials = materialsDatabase.getMaterials(); + //Create a sorted final list from the database for pulling the database information + materials = materialsDatabase.getMaterials(); + //Sorts the list according to the material names + Collections.sort(materials, new Comparator() { + public int compare(Material first, Material second) { + return (first.getName().compareTo(second.getName())); + } + }); + + //Create a copy of the master list for the table to display. + List editableCopy = new ArrayList(); + for(int i=0; i listFromTree = (List)treeViewer.getInput(); + //Get the filter text + String filterText = filter.getText().toLowerCase(); + + //Iterate over the list and pick the items to keep from the filter text. + int numRemoved = 0; + for(int i=0; i Date: Tue, 16 Jun 2015 13:22:14 -0400 Subject: [PATCH 14/18] Changes to materials database are now permenently saved, beforehand they were only saved for the session but not acctually pushed to the database. Signed-off-by: Kasper Gammeltoft --- .../client/widgets/ListComponentNattable.java | 9 ++++ .../META-INF/MANIFEST.MF | 3 +- .../ice/materials/ui/MaterialDetailsPage.java | 43 +++++++------------ .../MaterialsDatabaseMasterDetailsBlock.java | 4 +- 4 files changed, 28 insertions(+), 31 deletions(-) diff --git a/src/org.eclipse.ice.client.widgets/src/org/eclipse/ice/client/widgets/ListComponentNattable.java b/src/org.eclipse.ice.client.widgets/src/org/eclipse/ice/client/widgets/ListComponentNattable.java index 023d07923..0e1e21e82 100644 --- a/src/org.eclipse.ice.client.widgets/src/org/eclipse/ice/client/widgets/ListComponentNattable.java +++ b/src/org.eclipse.ice.client.widgets/src/org/eclipse/ice/client/widgets/ListComponentNattable.java @@ -260,6 +260,15 @@ public class ListComponentNattable { } + /** + * Gets the row selection provider so that another class could potentially listen + * for selection events in the table. + * @return + */ + public RowSelectionProvider getSelectionProvider(){ + return selectionProvider; + } + /** * Gets the SWT.COLOR of the current background for the table. By default is a light gray * @return Color The background color. diff --git a/src/org.eclipse.ice.materials.ui/META-INF/MANIFEST.MF b/src/org.eclipse.ice.materials.ui/META-INF/MANIFEST.MF index 48af83874..b105fc17c 100644 --- a/src/org.eclipse.ice.materials.ui/META-INF/MANIFEST.MF +++ b/src/org.eclipse.ice.materials.ui/META-INF/MANIFEST.MF @@ -12,7 +12,8 @@ Require-Bundle: org.eclipse.e4.ui.model.workbench;bundle-version="1.0.1.v2013111 org.eclipse.ui;bundle-version="3.105.0", org.eclipse.ice.datastructures, org.eclipse.ice.client.widgets, - org.eclipse.jface + org.eclipse.jface, + org.eclipse.nebula.widgets.nattable.core Bundle-RequiredExecutionEnvironment: JavaSE-1.7 Import-Package: javax.inject;version="1.0.0", org.eclipse.core.runtime;version="3.4.0", diff --git a/src/org.eclipse.ice.materials.ui/src/org/eclipse/ice/materials/ui/MaterialDetailsPage.java b/src/org.eclipse.ice.materials.ui/src/org/eclipse/ice/materials/ui/MaterialDetailsPage.java index d41c43444..ffda223ca 100644 --- a/src/org.eclipse.ice.materials.ui/src/org/eclipse/ice/materials/ui/MaterialDetailsPage.java +++ b/src/org.eclipse.ice.materials.ui/src/org/eclipse/ice/materials/ui/MaterialDetailsPage.java @@ -21,9 +21,13 @@ import org.eclipse.ice.materials.IMaterialsDatabase; import org.eclipse.ice.materials.SingleMaterialWritableTableFormat; import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.ISelectionChangedListener; import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.jface.viewers.SelectionChangedEvent; import org.eclipse.jface.viewers.StructuredSelection; import org.eclipse.jface.window.Window; +import org.eclipse.nebula.widgets.nattable.NatTable; +import org.eclipse.nebula.widgets.nattable.selection.RowSelectionProvider; import org.eclipse.swt.SWT; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.events.SelectionListener; @@ -223,6 +227,15 @@ public class MaterialDetailsPage implements IDetailsPage { //makes the NatTable, with the list data and current sectionClient to draw on. natTable = new ListComponentNattable(sectionClient, list, true); + RowSelectionProvider selectionProvider = natTable.getSelectionProvider(); + selectionProvider.addSelectionChangedListener(new ISelectionChangedListener(){ + + @Override + public void selectionChanged(SelectionChangedEvent arg0) { + database.updateMaterial(material); + } + + }); } list.clear(); @@ -292,34 +305,6 @@ public class MaterialDetailsPage implements IDetailsPage { buttonComposite.setLayoutData(new GridData(SWT.RIGHT, SWT.FILL, false, true, 1, 1)); - - /* - - // Create a listener that will throw up an error message since the Add - // and Delete operations are not yet supported. The error message is - // just a simple JFace message dialog that is opened when either button - // is pressed. - String title = "Operation Unsupported"; - String msg = "Adding and deleting properties" - + " is not yet supported."; - String[] labels = { "OK" }; - final MessageDialog dialog = new MessageDialog(parent.getShell(), - title, null, msg, MessageDialog.ERROR, labels, 0); - SelectionListener errorListener = new SelectionListener() { - @Override - public void widgetSelected(SelectionEvent e) { - dialog.open(); - } - - @Override - public void widgetDefaultSelected(SelectionEvent e) { - dialog.open(); - } - }; - - - */ - // Create the Add button Button addMaterialButton = new Button(buttonComposite, SWT.PUSH); addMaterialButton.setText("Add"); @@ -333,6 +318,7 @@ public class MaterialDetailsPage implements IDetailsPage { //Sets the new property MaterialProperty newProperty = dialog.getSelection(); material.setProperty(newProperty.key, newProperty.value); + database.updateMaterial(material); // Lock the list to avoid concurrent modifications list.getReadWriteLock().writeLock().lock(); @@ -371,6 +357,7 @@ public class MaterialDetailsPage implements IDetailsPage { //Removes the property from the material. material.removeProperty(property); + database.updateMaterial(material); //Finally, removes the property string from the list so that it will //update on screen for the user. diff --git a/src/org.eclipse.ice.materials.ui/src/org/eclipse/ice/materials/ui/MaterialsDatabaseMasterDetailsBlock.java b/src/org.eclipse.ice.materials.ui/src/org/eclipse/ice/materials/ui/MaterialsDatabaseMasterDetailsBlock.java index 9c8e37110..382c3a4a2 100644 --- a/src/org.eclipse.ice.materials.ui/src/org/eclipse/ice/materials/ui/MaterialsDatabaseMasterDetailsBlock.java +++ b/src/org.eclipse.ice.materials.ui/src/org/eclipse/ice/materials/ui/MaterialsDatabaseMasterDetailsBlock.java @@ -197,7 +197,7 @@ public class MaterialsDatabaseMasterDetailsBlock extends MasterDetailsBlock { numRemoved++; } } - //Refresh the tree viwer so that it is repainted + //Refresh the tree viewer so that it is repainted treeViewer.refresh(); } }); @@ -205,7 +205,7 @@ public class MaterialsDatabaseMasterDetailsBlock extends MasterDetailsBlock { treeViewer.getTree().setLayout(new GridLayout(1, true)); - //Sets the gridData to grab the availiable space, but to have only the treeview have the scrolling. + //Sets the gridData to grab the available space, but to have only the treeview have the scrolling. //This allows for the master tree to scroll without moving the details page out of the viewport. GridData data = new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1); data.widthHint = sectionClient.getClientArea().width; -- GitLab From 1d403e12fcef98df2226bcdaa14b2cc5cded3dfe Mon Sep 17 00:00:00 2001 From: Kasper Gammeltoft Date: Tue, 16 Jun 2015 15:21:46 -0400 Subject: [PATCH 15/18] Created a test for the SingleMaterialWritableTableFormat class. Fixed bugs with the class as well. Signed-off-by: Kasper Gammeltoft --- .../SingleMaterialWritableTableFormat.java | 18 ++- ...ngleMaterialWritableTableFormatTester.java | 108 ++++++++++++++++++ 2 files changed, 124 insertions(+), 2 deletions(-) create mode 100644 tests/org.eclipse.ice.materials.test/src/org/eclipse/ice/materials/test/SingleMaterialWritableTableFormatTester.java diff --git a/src/org.eclipse.ice.materials/src/org/eclipse/ice/materials/SingleMaterialWritableTableFormat.java b/src/org.eclipse.ice.materials/src/org/eclipse/ice/materials/SingleMaterialWritableTableFormat.java index d333fd2a0..a84a9a75d 100644 --- a/src/org.eclipse.ice.materials/src/org/eclipse/ice/materials/SingleMaterialWritableTableFormat.java +++ b/src/org.eclipse.ice.materials/src/org/eclipse/ice/materials/SingleMaterialWritableTableFormat.java @@ -45,6 +45,14 @@ public class SingleMaterialWritableTableFormat implements WritableTableFormat Date: Tue, 16 Jun 2015 17:12:00 -0400 Subject: [PATCH 16/18] Minor fixes, formatted some files. Signed-off-by: Kasper Gammeltoft --- .../client/widgets/ElementSourceDialog.java | 125 +++++----- .../client/widgets/ListComponentNattable.java | 223 +++++++++--------- .../widgets/ListComponentSectionPage.java | 188 ++++++++------- .../ice/materials/ui/AddPropertyDialog.java | 118 +++++---- .../ice/materials/ui/MaterialDetailsPage.java | 168 ++++++------- .../MaterialsDatabaseMasterDetailsBlock.java | 108 +++++---- .../SingleMaterialWritableTableFormat.java | 118 +++++---- .../test/ListComponentNattableTest.java | 130 +++++----- ...ngleMaterialWritableTableFormatTester.java | 32 ++- 9 files changed, 640 insertions(+), 570 deletions(-) diff --git a/src/org.eclipse.ice.client.widgets/src/org/eclipse/ice/client/widgets/ElementSourceDialog.java b/src/org.eclipse.ice.client.widgets/src/org/eclipse/ice/client/widgets/ElementSourceDialog.java index b225767ba..560d6390f 100644 --- a/src/org.eclipse.ice.client.widgets/src/org/eclipse/ice/client/widgets/ElementSourceDialog.java +++ b/src/org.eclipse.ice.client.widgets/src/org/eclipse/ice/client/widgets/ElementSourceDialog.java @@ -7,7 +7,7 @@ * * Contributors: * Initial API and implementation and/or initial documentation - - * Jay Jay Billings + * Jay Jay Billings, Kasper Gammeltoft *******************************************************************************/ package org.eclipse.ice.client.widgets; @@ -38,8 +38,8 @@ import ca.odell.glazedlists.gui.WritableTableFormat; * ListComponents. * * - * @author Jay Jay Billings - * + * @author Jay Jay Billings, Kasper Gammeltoft + * */ public class ElementSourceDialog extends Dialog { @@ -47,8 +47,7 @@ public class ElementSourceDialog extends Dialog { * The source that should be drawn */ private IElementSource source; - - + /** * The list of the data for the table to display */ @@ -81,16 +80,17 @@ public class ElementSourceDialog extends Dialog { IElementSource elementSource) { super(parentShell); source = elementSource; - //Create the list component from source + // Create the list component from source list = new ListComponent(); list.setTableFormat((WritableTableFormat) source.getTableFormat()); elements = source.getElements(); list.addAll(elements); - - //Sorts the list according to the material names + + // Sorts the list according to the material names Collections.sort(list, new Comparator() { public int compare(Object first, Object second) { - return ((Material)first).getName().compareTo(((Material)second).getName()); + return ((Material) first).getName().compareTo( + ((Material) second).getName()); } }); } @@ -104,100 +104,110 @@ public class ElementSourceDialog extends Dialog { */ @Override protected Control createDialogArea(Composite parent) { - + + // Create the composite from the parent Composite comp = (Composite) super.createDialogArea(parent); comp.setLayout(new GridLayout(1, false)); comp.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1)); - - //Set the background to white (visible on the borders) + + // Set the background to white (visible on the borders) comp.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_WHITE)); - - //Add filter to the Dialog to filter the table results + + // Add filter to the Dialog to filter the table results final Text filter = new Text(comp, SWT.BORDER | SWT.SEARCH); filter.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false, 1, 1)); - - //Get a copy of the list to give to the NatTable so that we can keep a fresh copy to compare to. + + // Get a copy of the list to give to the NatTable so that we can keep a + // fresh copy to compare to. ListComponent copy = new ListComponent(); copy.setTableFormat(list.getTableFormat()); - for(int i=0; i select = new ListComponent(); select.add(list.get(0)); listTable.setSelection(select); - - //Add a modify listener to filter the table as the user types in the filter. + + // Add a modify listener to filter the table as the user types in the + // filter. filter.addModifyListener(new ModifyListener() { - + @Override public void modifyText(ModifyEvent arg0) { ListComponent listFromTable = listTable.getList(); - //Get the filter text + // Get the filter text String filterText = filter.getText().toLowerCase(); - - //Iterate over the list and pick the items to keep from the filter text. + + // Iterate over the list and pick the items to keep from the + // filter text. int numRemoved = 0; - for(int i=0; i extends Dialog { @Override protected void okPressed() { - //Sets the selection if OK is pressed, will be the first selected object if there are multiple selections. + // Sets the selection if OK is pressed, will be the first selected + // object if there are multiple selections. selection = (T) listTable.getSelectedObjects().get(0); super.okPressed(); } diff --git a/src/org.eclipse.ice.client.widgets/src/org/eclipse/ice/client/widgets/ListComponentNattable.java b/src/org.eclipse.ice.client.widgets/src/org/eclipse/ice/client/widgets/ListComponentNattable.java index 0e1e21e82..8309e07b2 100644 --- a/src/org.eclipse.ice.client.widgets/src/org/eclipse/ice/client/widgets/ListComponentNattable.java +++ b/src/org.eclipse.ice.client.widgets/src/org/eclipse/ice/client/widgets/ListComponentNattable.java @@ -56,59 +56,62 @@ import org.eclipse.swt.widgets.Composite; * * * @author Jay Jay Billings, Kasper Gammeltoft - * + * */ public class ListComponentNattable { - - /** + + /** * The Composite will act as a parent where the Nattable will be drawn. * */ private Composite sectionClient; - + /** * The ListComponent is the data input for the Nattable to use. * */ private ListComponent list; - + /** - * Holds the selected list components. + * Holds the selected list components. */ private ListComponent selectedList; - + /** * The table to hold the list data. */ private NatTable table; - + /** - * Provides the information about the selection layer for the NatTable. Gets/Sets the selected rows for the table. + * Provides the information about the selection layer for the NatTable. + * Gets/Sets the selected rows for the table. */ private RowSelectionProvider selectionProvider; - - + /** - * If the NatTable is editable or not (from the user's side). If false, the user will only be able to select table - * cells, if true then the user will be able to change the table's values. + * If the NatTable is editable or not (from the user's side). If false, the + * user will only be able to select table cells, if true then the user will + * be able to change the table's values. */ private boolean canEdit; - + private boolean percentResize; - + /** - * Constructor, needs the parent Composite and the List for data. This has the column percent resizing for the table - * automatically turned on. You must use the constructor with that explicit variable if you do not want column width - * resizing to fit the parent Composite. + * Constructor, needs the parent Composite and the List for data. This has + * the column percent resizing for the table automatically turned on. You + * must use the constructor with that explicit variable if you do not want + * column width resizing to fit the parent Composite. * * @param parent - * The Composite to be used as a parent Shell or View. + * The Composite to be used as a parent Shell or View. * @param listComponent - * The ListComponent to be used as list data for the Nattable + * The ListComponent to be used as list data for the Nattable * @param editable - * A boolean representing if the table is editable by the user + * A boolean representing if the table is editable by the user */ - public ListComponentNattable(Composite parent, ListComponent listComponent, boolean editable){ + public ListComponentNattable(Composite parent, ListComponent listComponent, + boolean editable) { sectionClient = parent; list = listComponent; selectedList = new ListComponent(); @@ -116,21 +119,23 @@ public class ListComponentNattable { percentResize = true; createTable(); } - + /** * Constructor, needs the parent Composite and the List for data * * @param parent - * The Composite to be used as a parent Shell or View. + * The Composite to be used as a parent Shell or View. * @param listComponent - * The ListComponent to be used as list data for the Nattable + * The ListComponent to be used as list data for the Nattable * @param editable - * A boolean representing if the table is editable by the user + * A boolean representing if the table is editable by the user * @param sizeForParent - * A boolean representing if the table should take the size of its parent or maintain its preferred size - * and have scroll bars or unfilled space instead. Only effects column width. + * A boolean representing if the table should take the size of + * its parent or maintain its preferred size and have scroll bars + * or unfilled space instead. Only effects column width. */ - public ListComponentNattable(Composite parent, ListComponent listComponent, boolean editable, boolean sizeForParent){ + public ListComponentNattable(Composite parent, ListComponent listComponent, + boolean editable, boolean sizeForParent) { sectionClient = parent; list = listComponent; selectedList = new ListComponent(); @@ -138,8 +143,7 @@ public class ListComponentNattable { percentResize = sizeForParent; createTable(); } - - + /** * This operation configures the NatTable used to render the ListComponent * on the screen. @@ -154,10 +158,10 @@ public class ListComponentNattable { GlazedListsEventLayer eventLayer = new GlazedListsEventLayer(dataLayer, list); - //If the table's columns should autoresize their widths to fill the parent Composite. + // If the table's columns should autoresize their widths to fill the + // parent Composite. dataLayer.setColumnPercentageSizing(percentResize); - // Create the selection and viewport layers of the table SelectionLayer selectionLayer = new SelectionLayer(eventLayer); ViewportLayer viewportLayer = new ViewportLayer(selectionLayer); @@ -178,11 +182,11 @@ public class ListComponentNattable { // Turn the column labels on by default columnHeaderDataLayer .setConfigLabelAccumulator(new ColumnLabelAccumulator()); - + // Create the row header layer (row names) of the table IDataProvider rowHeaderDataProvider = new DefaultRowHeaderDataProvider( dataProvider); - + DataLayer rowHeaderDataLayer = new DefaultRowHeaderDataLayer( rowHeaderDataProvider); ILayer rowHeaderLayer = new RowHeaderLayer(rowHeaderDataLayer, @@ -203,140 +207,131 @@ public class ListComponentNattable { natTable.setConfigRegistry(configRegistry); // Set the default table style natTable.addConfiguration(new DefaultNatTableStyleConfiguration()); - + // Make the table editable by updating the configuration rules natTable.addConfiguration(new AbstractRegistryConfiguration() { @Override public void configureRegistry(IConfigRegistry configRegistry) { - //only allow editing if the user can edit. - if(canEdit){ - configRegistry.registerConfigAttribute( - EditConfigAttributes.CELL_EDITABLE_RULE, - IEditableRule.ALWAYS_EDITABLE); + // only allow editing if the user can edit. + if (canEdit) { + configRegistry.registerConfigAttribute( + EditConfigAttributes.CELL_EDITABLE_RULE, + IEditableRule.ALWAYS_EDITABLE); } else { - configRegistry.registerConfigAttribute( - EditConfigAttributes.CELL_EDITABLE_RULE, - IEditableRule.NEVER_EDITABLE); - } + configRegistry.registerConfigAttribute( + EditConfigAttributes.CELL_EDITABLE_RULE, + IEditableRule.NEVER_EDITABLE); + } } - }); - + }); + // Configure the table (lay it out) natTable.configure(); natTable.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false, 1, 1)); - + + // Setting table instance variable table = natTable; - - //Create a new selectionProvider to listen to selection events. - selectionProvider = new RowSelectionProvider(selectionLayer, (IRowDataProvider)dataProvider, false); - //Add the listener - selectionProvider.addSelectionChangedListener(new ISelectionChangedListener(){ - @Override - public void selectionChanged(SelectionChangedEvent e) { - - //Get the selection and add the selected objects to a ListComponent for reference. - IStructuredSelection selection = (IStructuredSelection) e.getSelection(); - selectedList.clear(); - Iterator it = selection.iterator(); - while(it.hasNext()){ - selectedList.add(it.next()); - } - } - } - ); - - + // Create a new selectionProvider to listen to selection events. + selectionProvider = new RowSelectionProvider(selectionLayer, + (IRowDataProvider) dataProvider, false); + // Add the listener + selectionProvider + .addSelectionChangedListener(new ISelectionChangedListener() { + + @Override + public void selectionChanged(SelectionChangedEvent e) { + + // Get the selection and add the selected objects to a + // ListComponent for reference. + IStructuredSelection selection = (IStructuredSelection) e + .getSelection(); + selectedList.clear(); + Iterator it = selection.iterator(); + while (it.hasNext()) { + selectedList.add(it.next()); + } + } + }); + return; } - + /** - * Gets the currently selected elements. + * Gets the currently selected elements. + * * @return */ - public ListComponent getSelectedObjects(){ + public ListComponent getSelectedObjects() { return selectedList; - + } - + /** - * Gets the row selection provider so that another class could potentially listen - * for selection events in the table. + * Gets the row selection provider so that another class could potentially + * listen for selection events in the table. + * * @return */ - public RowSelectionProvider getSelectionProvider(){ + public RowSelectionProvider getSelectionProvider() { return selectionProvider; } - + /** - * Gets the SWT.COLOR of the current background for the table. By default is a light gray - * @return Color The background color. + * Gets the SWT.COLOR of the current background for the table. By default is + * a light gray + * + * @return Color The background color. */ - public Color getBackground(){ + public Color getBackground() { return table.getBackground(); } - + /** - * Sets the elements to be selected for this table. + * Sets the elements to be selected for this table. + * * @param elements */ - public void setSelection(ListComponent elements){ + public void setSelection(ListComponent elements) { StructuredSelection newSelection = new StructuredSelection(elements); selectionProvider.setSelection(newSelection); } - + /** * Gets the preferred width of the table. + * * @return int The preferred width */ - public int getPreferredWidth(){ + public int getPreferredWidth() { return table.getPreferredWidth(); } - + /** - * Gets the preferred height of the table. + * Gets the preferred height of the table. + * * @return int The preferred height */ - public int getPreferredHeight(){ + public int getPreferredHeight() { return table.getPreferredHeight(); } - - - /** - * Sets a new list to be used for the table data. - * @param listComponent - * A ListComponent object for the Nattable's data. - */ - public void setList(ListComponent listComponent){ - list = listComponent; - } - - + /** * Gets the ListComponent that this Nattable uses for data. + * * @return */ - public ListComponent getList(){ + public ListComponent getList() { return list; } - - - /** - * Sets a new parent Composite used to draw the Nattable - * @param parent - * A Composite object - */ - public void setComposite(Composite parent){ - sectionClient = parent; - } - + /** * Gets the NatTable + * * @return */ - public NatTable getTable(){ + public NatTable getTable() { return table; } - + } \ No newline at end of file diff --git a/src/org.eclipse.ice.client.widgets/src/org/eclipse/ice/client/widgets/ListComponentSectionPage.java b/src/org.eclipse.ice.client.widgets/src/org/eclipse/ice/client/widgets/ListComponentSectionPage.java index e45852b81..3790e3c61 100644 --- a/src/org.eclipse.ice.client.widgets/src/org/eclipse/ice/client/widgets/ListComponentSectionPage.java +++ b/src/org.eclipse.ice.client.widgets/src/org/eclipse/ice/client/widgets/ListComponentSectionPage.java @@ -7,7 +7,7 @@ * * Contributors: * Initial API and implementation and/or initial documentation - - * Jay Jay Billings + * Jay Jay Billings, Kasper Gammeltoft *******************************************************************************/ package org.eclipse.ice.client.widgets; @@ -58,7 +58,7 @@ import org.eclipse.swt.layout.GridData; * This is a FormPage that can render ListComponents into pages usable by the * ICEFormEditor. * - * @author Jay Jay Billings + * @author Jay Jay Billings, Kasper Gammeltoft * */ public class ListComponentSectionPage extends ICEFormPage { @@ -85,11 +85,13 @@ public class ListComponentSectionPage extends ICEFormPage { */ private Composite sectionClient; + /** + * The NatTable that is displayed + */ private ListComponentNattable table; - - + /** - * The Constructor + * The Constructor. * * @param editor * The FormEditor for which the Page should be constructed. @@ -114,7 +116,7 @@ public class ListComponentSectionPage extends ICEFormPage { // Get the parent form and the toolkit final ScrolledForm scrolledForm = managedForm.getForm(); final FormToolkit formToolkit = managedForm.getToolkit(); - + // Set a GridLayout with a single column. Remove the default margins. GridLayout layout = new GridLayout(1, true); layout.marginWidth = 0; @@ -126,7 +128,7 @@ public class ListComponentSectionPage extends ICEFormPage { // Get the parent Composite parent = managedForm.getForm().getBody(); - + shell = parent.getShell(); // Create the section and set its layout info Section listSection = formToolkit.createSection(parent, @@ -141,19 +143,17 @@ public class ListComponentSectionPage extends ICEFormPage { sectionClient.setLayout(new GridLayout(2, false)); sectionClient.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1)); - - sectionClient.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_WHITE)); - shell.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_WHITE)); - // Draw the table - //configureTable(); + // Fixes section header bug where label color is spammed + sectionClient.setBackground(Display.getCurrent().getSystemColor( + SWT.COLOR_WHITE)); + // Fixes background color bug for NatTable sectionClient.setBackgroundMode(SWT.INHERIT_FORCE); + // Draws the table and sets that instance variable table = new ListComponentNattable(sectionClient, list, true); - - // Create the Add/Delete buttons - createAddDeleteButtons(); - - + + // Create the buttons for add, delete, up, and down + createButtons(); // Set the section client. listSection.setClient(sectionClient); @@ -164,9 +164,9 @@ public class ListComponentSectionPage extends ICEFormPage { /** * This operation creates the add and delete buttons that are used to add - * layers to the table. Also creates buttons for moving layers around. + * layers to the table. Also creates buttons for moving layers around. */ - private void createAddDeleteButtons() { + private void createButtons() { // Create a composite for holding Add/Delete buttons to manipulate // the table and lay it out. @@ -174,7 +174,7 @@ public class ListComponentSectionPage extends ICEFormPage { listButtonComposite.setLayout(new GridLayout(1, false)); listButtonComposite.setLayoutData(new GridData(SWT.RIGHT, SWT.FILL, false, true, 1, 1)); - + // Create the add button to add a new element to the list. Button addMaterialButton = new Button(listButtonComposite, SWT.PUSH); addMaterialButton.setText("Add"); @@ -231,135 +231,140 @@ public class ListComponentSectionPage extends ICEFormPage { // from the list. Button deleteMaterialButton = new Button(listButtonComposite, SWT.PUSH); deleteMaterialButton.setText("Delete"); - deleteMaterialButton.addSelectionListener(new SelectionListener(){ + deleteMaterialButton.addSelectionListener(new SelectionListener() { @Override public void widgetDefaultSelected(SelectionEvent arg0) { - + } @Override public void widgetSelected(SelectionEvent arg0) { - //System.out.println("delete pressed"); - //currently testing to see if the delete button could work, deletes the last material added rather than - //the currently selected material. - - //checks if list has something to delete - if(list.size()>0){ + + // checks if list has something to delete + if (list.size() > 0) { ListComponent selected = table.getSelectedObjects(); - if(selected.size()>0){ - - //removes that material from the list - //lock the list before removing the selection + if (selected.size() > 0) { + + // removes that material from the list + // lock the list before removing the selection list.getReadWriteLock().writeLock().lock(); try { - for(Object o: selected){ + for (Object o : selected) { list.remove(o); } } finally { // Unlock it list.getReadWriteLock().writeLock().unlock(); - } + } } - } + } } - + }); - - //Move up button, moves the selected rows up one index. + + // Move up button, moves the selected rows up one index. Button moveUpButton = new Button(listButtonComposite, SWT.PUSH); moveUpButton.setText("^"); moveUpButton.addSelectionListener(new SelectionListener() { @Override public void widgetDefaultSelected(SelectionEvent arg0) { - + } @SuppressWarnings("unchecked") @Override public void widgetSelected(SelectionEvent arg0) { - //makes sure there is actually data in the list to manipulate - if(list.size()>0){ - //gets selected rows + // Makes sure there is actually data in the list to manipulate + if (list.size() > 0) { + // Gets selected rows ListComponent selected = table.getSelectedObjects(); - //makes sure there are selected rows - if(selected.size()>0){ + // Makes sure there are selected rows + if (selected.size() > 0) { int numSelected = selected.size(); - //makes sure that the user does not move the cell at position 0 to position -1 (past top of table) - if(!(selected.get(0).equals(list.get(0)))){ - + // Makes sure that the user does not move the cell at + // position 0 to position -1 (past top of table) + if (!(selected.get(0).equals(list.get(0)))) { + list.getReadWriteLock().writeLock().lock(); - - //gets the object in the list that will be overridden + + // Gets the object in the list that will be + // overridden int index = 0; Object toMove = list.get(0); - - //overrides the list entries to move the selected rows up by one row - for(int i=0; i0){ - //gets selected rows + // makes sure there is actually data in the list to manipulate + if (list.size() > 0) { + // Gets selected rows ListComponent selected = table.getSelectedObjects(); - //makes sure there are selected rows - if(selected.size()>0){ + // Makes sure there are selected rows + if (selected.size() > 0) { int numSelected = selected.size(); - //makes sure that the user does not move the selected cell past the end of the table. - if(!(selected.get(numSelected-1).equals(list.get(list.size()-1)))){ - + // Makes sure that the user does not move the selected + // cell past the end of the table. + if (!(selected.get(numSelected - 1).equals(list + .get(list.size() - 1)))) { + list.getReadWriteLock().writeLock().lock(); - - //gets the object in the list that will be overridden + + // Gets the object in the list that will be + // overridden int index = 0; Object toMove = list.get(0); - - //overrides the list entries to move the selected rows up by one row - for(int i=numSelected-1; i>=0; i--){ - index = list.indexOf(selected.get(i))+1; + + // Overrides the list entries to move the selected + // rows up by one row + for (int i = numSelected - 1; i >= 0; i--) { + index = list.indexOf(selected.get(i)) + 1; toMove = list.get(index); list.set(index, selected.get(i)); - list.set(index-1, toMove); - + list.set(index - 1, toMove); + } - - //resets the overridden row to be at the end of the selected rows - list.set(index-1, toMove); - - //unlocks the list + + // Resets the overridden row to be at the end of the + // selected rows + list.set(index - 1, toMove); + + // Unlocks the list list.getReadWriteLock().writeLock().unlock(); table.setSelection(selected); @@ -367,23 +372,26 @@ public class ListComponentSectionPage extends ICEFormPage { } } } - + }); return; } - /** * This operation sets the ListComponent that should be used as input for * the section page. * * @param list - * The ListComponent + * The ListComponent to set as the new list for this section page + * and for the data to be displayed in its table. */ public void setList(ListComponent list) { this.list = list; this.source = list.getElementSource(); + ListComponent tableList = this.table.getList(); + tableList.clear(); + tableList.addAll(list); } } \ No newline at end of file diff --git a/src/org.eclipse.ice.materials.ui/src/org/eclipse/ice/materials/ui/AddPropertyDialog.java b/src/org.eclipse.ice.materials.ui/src/org/eclipse/ice/materials/ui/AddPropertyDialog.java index cb295e48f..61a150aa1 100644 --- a/src/org.eclipse.ice.materials.ui/src/org/eclipse/ice/materials/ui/AddPropertyDialog.java +++ b/src/org.eclipse.ice.materials.ui/src/org/eclipse/ice/materials/ui/AddPropertyDialog.java @@ -1,3 +1,14 @@ +/******************************************************************************* + * Copyright (c) 2013, 2014 UT-Battelle, LLC. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Initial API and implementation and/or initial documentation - Kasper + * Gammeltoft + *******************************************************************************/ package org.eclipse.ice.materials.ui; import org.eclipse.jface.dialogs.Dialog; @@ -12,45 +23,43 @@ import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.Text; /** - * This is a JFace Dialog for adding properties to materials in the materials Database. - * It has two text fields: A name for the property and a value for the property that should be - * a String and a double, respectively. + * This is a JFace Dialog for adding properties to materials in the materials + * Database. It has two text fields: A name for the property and a value for the + * property that should be a String and a double, respectively. * * * @author Kasper Gammeltoft - * + * */ public class AddPropertyDialog extends Dialog { - - + /** - * The material property to return after the dialog closes. + * The material property to return after the dialog closes. */ MaterialProperty newProperty; - + /** - * Text field for holding the name of the property to be added. + * Text field for holding the name of the property to be added. */ Text nameText; - - + /** - * Text field for holding the value of the property to be added. + * Text field for holding the value of the property to be added. */ Text valueText; - /** - * The constructor. Creates a new Dialog for adding properties to materials. + * The constructor. Creates a new Dialog for adding properties to materials. + * * @param parentShell + * The parent shell to create the Dialog in */ public AddPropertyDialog(Shell parentShell) { super(parentShell); newProperty = new MaterialProperty(); - + } - - + /* * (non-Javadoc) * @@ -60,50 +69,53 @@ public class AddPropertyDialog extends Dialog { */ @Override protected Control createDialogArea(Composite parent) { - //Create the composite to hold the text fields and labels + // Create the composite to hold the text fields and labels Composite comp = (Composite) super.createDialogArea(parent); comp.setLayout(new GridLayout(2, false)); comp.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1)); - - //Create property name composite for storing that input + + // Create property name composite for storing that input Composite propertyName = new Composite(comp, SWT.NONE); propertyName.setLayout(new GridLayout(2, false)); - propertyName.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false, 1, 1)); - - //The label for the property's name input + propertyName.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, + false, 1, 1)); + + // The label for the property's name input Label nameLbl = new Label(propertyName, SWT.NONE); nameLbl.setText("Property: "); - - //The text field for the property's name + + // The text field for the property's name nameText = new Text(propertyName, SWT.BORDER | SWT.LEAD); - - //Create the property value composite for storing that input + + // Create the property value composite for storing that input Composite propertyValue = new Composite(comp, SWT.NONE); propertyValue.setLayout(new GridLayout(2, false)); - propertyValue.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false, 1, 1)); - - //The label for the property's value input + propertyValue.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, + false, 1, 1)); + + // The label for the property's value input Label valLbl = new Label(propertyValue, SWT.NONE); valLbl.setText("Value: "); - - //The text field for the property's value + + // The text field for the property's value valueText = new Text(propertyValue, SWT.BORDER | SWT.LEAD); - + return comp; } - - + /* * (non-Javadoc) - * @see org.eclipse.jface.window.Window#configureShell(org.eclipse.swt.widgets.Shell) + * + * @see + * org.eclipse.jface.window.Window#configureShell(org.eclipse.swt.widgets + * .Shell) */ @Override - protected void configureShell(Shell shell){ + protected void configureShell(Shell shell) { super.configureShell(shell); shell.setText("Add Property"); } - - + /* * (non-Javadoc) * @@ -111,20 +123,22 @@ public class AddPropertyDialog extends Dialog { */ @Override protected void okPressed() { - - //Locks the current values in the text fields into a MaterialProperty to add to the database. - - //Gets the text for the name. + + // Locks the current values in the text fields into a MaterialProperty + // to add to the database. + + // Gets the text for the name. newProperty.key = nameText.getText(); - - //Gets the text for the value. + + // Gets the text for the value. String val = valueText.getText(); double dVal = 0.0; - - //If the text for the value is a number, will set that number as the value. Otherwise it will be zero - try{ + + // If the text for the value is a number, will set that number as the + // value. Otherwise it will be zero + try { dVal = Double.parseDouble(val); - } catch(Exception e){ + } catch (Exception e) { e.printStackTrace(); } newProperty.value = dVal; @@ -133,12 +147,12 @@ public class AddPropertyDialog extends Dialog { /** * Returns the new material property. - * @return - * The material property that was created by this dialog to be added to a material. + * + * @return The material property that was created by this dialog to be added + * to a material. */ public MaterialProperty getSelection() { return newProperty; } - } diff --git a/src/org.eclipse.ice.materials.ui/src/org/eclipse/ice/materials/ui/MaterialDetailsPage.java b/src/org.eclipse.ice.materials.ui/src/org/eclipse/ice/materials/ui/MaterialDetailsPage.java index ffda223ca..d2b890f39 100644 --- a/src/org.eclipse.ice.materials.ui/src/org/eclipse/ice/materials/ui/MaterialDetailsPage.java +++ b/src/org.eclipse.ice.materials.ui/src/org/eclipse/ice/materials/ui/MaterialDetailsPage.java @@ -49,7 +49,7 @@ import ca.odell.glazedlists.gui.WritableTableFormat; * This class presents a Material as a table with properties. * * @author Jay Jay Billings - * + * */ public class MaterialDetailsPage implements IDetailsPage { @@ -67,29 +67,27 @@ public class MaterialDetailsPage implements IDetailsPage { * The Form that manages this details page */ IManagedForm managedForm; - + /** - * The list component to hold the data for the NatTable + * The list component that holds the property keys for the NatTable. */ ListComponent list; - - + /** * The table to display the material's properties */ ListComponentNattable natTable; - /** * The section client for the NatTable to draw on */ Composite sectionClient; - + /** * The shell to use for opening the add property dialog */ Shell shell; - + /** * The constructor * @@ -202,53 +200,62 @@ public class MaterialDetailsPage implements IDetailsPage { Object structuredSelection = ((IStructuredSelection) selection) .getFirstElement(); if (structuredSelection instanceof Material) { - - //updates the material to the new selection + + // Updates the material to the new selection material = (Material) structuredSelection; - + // Creates new table if this is the first selection of a material. - if(natTable==null){ - - //Creates new listComponent for the table data. + if (natTable == null) { + + // Creates new listComponent for the table data. list = new ListComponent(); - //Gets the property names or column names for the table. + // Gets the property names or column names for the table. ArrayList propertyNames = new ArrayList(); propertyNames.addAll(material.getProperties().keySet()); - - //Creates new writable table format for the nattable - WritableTableFormat tableFormat = new SingleMaterialWritableTableFormat(material); - - //adds the tableformat to the list + + // Creates new writable table format for the nattable + WritableTableFormat tableFormat = new SingleMaterialWritableTableFormat( + material); + + // Adds the tableformat to the list list.setTableFormat(tableFormat); - - //adds the material + + // Adds the material list.addAll(propertyNames); - - //makes the NatTable, with the list data and current sectionClient to draw on. + + // Makes the NatTable, with the list data and current + // sectionClient to draw on. natTable = new ListComponentNattable(sectionClient, list, true); - RowSelectionProvider selectionProvider = natTable.getSelectionProvider(); - selectionProvider.addSelectionChangedListener(new ISelectionChangedListener(){ + RowSelectionProvider selectionProvider = natTable + .getSelectionProvider(); + selectionProvider + .addSelectionChangedListener(new ISelectionChangedListener() { + + @Override + public void selectionChanged( + SelectionChangedEvent arg0) { + database.updateMaterial(material); + } + + }); + } else { + + // Clears out any existing entries in the list + list.clear(); + // Gets the property names or column names for the table. + ArrayList propertyNames = new ArrayList(); + propertyNames.addAll(material.getProperties().keySet()); - @Override - public void selectionChanged(SelectionChangedEvent arg0) { - database.updateMaterial(material); - } + // Adds the new properties to the list. + list.addAll(propertyNames); + + // Changes the selected material + SingleMaterialWritableTableFormat format = (SingleMaterialWritableTableFormat) list + .getTableFormat(); + format.setMaterial(material); - }); } - - list.clear(); - //Gets the property names or column names for the table. - ArrayList propertyNames = new ArrayList(); - propertyNames.addAll(material.getProperties().keySet()); - - //adds the new properties to the list. - list.addAll(propertyNames); - - //changes the selected material - SingleMaterialWritableTableFormat format = (SingleMaterialWritableTableFormat)list.getTableFormat(); - format.setMaterial(material); } return; } @@ -262,9 +269,9 @@ public class MaterialDetailsPage implements IDetailsPage { */ @Override public void createContents(Composite parent) { - //Get the shell for the add property dialog + // Get the shell for the add property dialog shell = parent.getShell(); - + // Set the layout for the parent GridLayout parentGridLayout = new GridLayout(1, true); parent.setLayout(parentGridLayout); @@ -293,29 +300,30 @@ public class MaterialDetailsPage implements IDetailsPage { sectionClient.setLayoutData(new GridData(GridData.FILL_BOTH)); // Finally tell the section about its client section.setClient(sectionClient); - - //Sets the sectionClient color to overrule the table's background - sectionClient.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_WHITE)); + + // Sets the sectionClient color to overrule the table's background + sectionClient.setBackground(Display.getCurrent().getSystemColor( + SWT.COLOR_WHITE)); sectionClient.setBackgroundMode(SWT.INHERIT_FORCE); - + // Add a composite for holding the Add and Delete buttons for adding // or removing properties Composite buttonComposite = new Composite(sectionClient, SWT.NONE); buttonComposite.setLayout(new GridLayout(1, false)); buttonComposite.setLayoutData(new GridData(SWT.RIGHT, SWT.FILL, false, true, 1, 1)); - + // Create the Add button Button addMaterialButton = new Button(buttonComposite, SWT.PUSH); addMaterialButton.setText("Add"); - addMaterialButton.addSelectionListener(new SelectionListener(){ + addMaterialButton.addSelectionListener(new SelectionListener() { @Override public void widgetSelected(SelectionEvent arg0) { - //Opens the new dialog to create a property + // Opens the new dialog to create a property AddPropertyDialog dialog = new AddPropertyDialog(shell); if (dialog.open() == Window.OK) { - //Sets the new property + // Sets the new property MaterialProperty newProperty = dialog.getSelection(); material.setProperty(newProperty.key, newProperty.value); database.updateMaterial(material); @@ -323,7 +331,8 @@ public class MaterialDetailsPage implements IDetailsPage { // Lock the list to avoid concurrent modifications list.getReadWriteLock().writeLock().lock(); try { - //Adds the new property to the list so that it will update on screen for the user. + // Adds the new property to the list so that it will + // update on screen for the user. list.add(newProperty.key); } finally { // Unlock the list @@ -331,52 +340,47 @@ public class MaterialDetailsPage implements IDetailsPage { } } } - + @Override - public void widgetDefaultSelected(SelectionEvent arg0) { + public void widgetDefaultSelected(SelectionEvent arg0) { } - + }); - - - // Set the error listener for now until the add operation is - // supported. - //addMaterialButton.addSelectionListener(errorListener); - // Create the Delete button - - //Create the delete button for removing material properties. + + // Create the delete button for removing material properties. Button deleteMaterialButton = new Button(buttonComposite, SWT.PUSH); deleteMaterialButton.setText("Delete"); - deleteMaterialButton.addSelectionListener(new SelectionListener(){ + deleteMaterialButton.addSelectionListener(new SelectionListener() { @Override public void widgetSelected(SelectionEvent arg0) { - - //gets the selected property - String property = (String)natTable.getSelectedObjects().get(0); - - //Removes the property from the material. + + // gets the selected property + String property = (String) natTable.getSelectedObjects().get(0); + + // Removes the property from the material. material.removeProperty(property); database.updateMaterial(material); - - //Finally, removes the property string from the list so that it will - //update on screen for the user. - //Lock the list to avoid concurrent modifications + + // Finally, removes the property string from the list so that it + // will + // update on screen for the user. + // Lock the list to avoid concurrent modifications list.getReadWriteLock().writeLock().lock(); - try{ - //remove the property + try { + // remove the property list.remove(property); - } finally{ - //unlock the list + } finally { + // unlock the list list.getReadWriteLock().writeLock().unlock(); } } - + @Override public void widgetDefaultSelected(SelectionEvent arg0) { - + } - + }); return; diff --git a/src/org.eclipse.ice.materials.ui/src/org/eclipse/ice/materials/ui/MaterialsDatabaseMasterDetailsBlock.java b/src/org.eclipse.ice.materials.ui/src/org/eclipse/ice/materials/ui/MaterialsDatabaseMasterDetailsBlock.java index 382c3a4a2..2929bbd46 100644 --- a/src/org.eclipse.ice.materials.ui/src/org/eclipse/ice/materials/ui/MaterialsDatabaseMasterDetailsBlock.java +++ b/src/org.eclipse.ice.materials.ui/src/org/eclipse/ice/materials/ui/MaterialsDatabaseMasterDetailsBlock.java @@ -68,12 +68,12 @@ public class MaterialsDatabaseMasterDetailsBlock extends MasterDetailsBlock { * The list that holds the materials database information. */ List materials; - + /** * The managed form for the block. */ IManagedForm mForm; - + /** * The tree viewer for displaying the materials */ @@ -132,13 +132,14 @@ public class MaterialsDatabaseMasterDetailsBlock extends MasterDetailsBlock { // the managed form to publish events. final SectionPart sectionPart = new SectionPart(section); mForm.addPart(sectionPart); - + // Create a composite to hold the tree viewer and the filter text Composite treeComp = new Composite(sectionClient, SWT.NONE); treeComp.setLayout(new GridLayout(1, false)); - treeComp.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1)); - - //Add filter to the Dialog to filter the table results + treeComp.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, + 1)); + + // Add filter to the Dialog to filter the table results final Text filter = new Text(treeComp, SWT.BORDER | SWT.SEARCH); filter.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false, 1, 1)); @@ -147,66 +148,72 @@ public class MaterialsDatabaseMasterDetailsBlock extends MasterDetailsBlock { treeViewer.setContentProvider(new MaterialsDatabaseContentProvider()); treeViewer.setLabelProvider(new MaterialsDatabaseLabelProvider()); - //Create a sorted final list from the database for pulling the database information + // Create a sorted final list from the database for pulling the database + // information materials = materialsDatabase.getMaterials(); - //Sorts the list according to the material names - Collections.sort(materials, new Comparator() { - public int compare(Material first, Material second) { - return (first.getName().compareTo(second.getName())); - } - }); - - //Create a copy of the master list for the table to display. + // Sorts the list according to the material names + Collections.sort(materials, new Comparator() { + public int compare(Material first, Material second) { + return (first.getName().compareTo(second.getName())); + } + }); + + // Create a copy of the master list for the table to display. List editableCopy = new ArrayList(); - for(int i=0; i listFromTree = (List)treeViewer.getInput(); - //Get the filter text + List listFromTree = (List) treeViewer + .getInput(); + // Get the filter text String filterText = filter.getText().toLowerCase(); - - //Iterate over the list and pick the items to keep from the filter text. + + // Iterate over the list and pick the items to keep from the + // filter text. int numRemoved = 0; - for(int i=0; i{ +public class SingleMaterialWritableTableFormat implements + WritableTableFormat { /** - * The material to display, needed to access the material's specific properties. + * The material to display, needed to access the material's specific + * properties. */ private Material material; - + /** * Constructor - * @param material The material to keep up with. Must call setMaterial(Material material) each time the material changes!) + * + * @param material + * The material to keep up with. Must call setMaterial(Material + * material) each time the material changes!) */ public SingleMaterialWritableTableFormat(Material material) { this.material = material; - + } - + /** - * Sets a new material to display information with. - * @param material The new material + * Sets a new material to display information with. + * + * @param material + * The new material for this table format to display */ - public void setMaterial(Material material){ + public void setMaterial(Material material) { this.material = material; } - + /** * Gets the material that this table format is currently using. - * @return + * + * @return The material that this table format is currently using. */ - public Material getMaterial(){ + public Material getMaterial() { return material; } /** - * Returns the total number of columns, just 2 in this case as the material only has properties and values. + * Returns the total number of columns, just 2 in this case as the material + * only has properties and values. + * + * @return The column count */ @Override public int getColumnCount() { @@ -63,12 +75,17 @@ public class SingleMaterialWritableTableFormat implements WritableTableFormat colNames = new ArrayList(); colNames.addAll(material.getProperties().keySet()); - - MaterialWritableTableFormat tableFormat = new MaterialWritableTableFormat(colNames); - //Instantiate the ListComponent to test the Nattable with + // Set the format of the table, it is tested for holding materials + MaterialWritableTableFormat tableFormat = new MaterialWritableTableFormat( + colNames); + + // Instantiate the ListComponent to test the Nattable with list = new ListComponent(); list.setTableFormat(tableFormat); list.add(material); list.add(material2); - - //creates the new Nattable for testing + + // creates the new Nattable for testing table = new ListComponentNattable(sectionClient, list, false); - - //assertions for testing - /////////////////////////////////////////////////////////////////////////////////////// - + + // assertions for testing assertNotNull(table); - + assertEquals(table.getList().getColumnCount(), 3); - + table.getList().clear(); assertFalse(table.getList().contains(mat1)); - + table.getList().add(mat2); table.getList().add(mat3); - - assertEquals(table.getList().getColumnValue(mat2, 1), mat2.getProperty("A")); - + + assertEquals(table.getList().getColumnValue(mat2, 1), + mat2.getProperty("A")); + } @Test @@ -161,35 +183,7 @@ public class ListComponentNattableTest { table.setSelection(setList); ListComponent selected = table.getSelectedObjects(); assertEquals(selected.get(0), mat2); - - } - /* - @Test - public void testGetBackground() { - assertEquals(table.getBackground(), Display.getCurrent().getSystemColor(SWT.COLOR_WHITE)); - } - */ - - /* - @Test - public void testSetList() { - fail("Not yet implemented"); - } - */ - - /* - @Test - public void testGetList() { - assertEquals(this.list, table.getList()); - } - */ - - /* - @Test - public void testSetComposite() { - fail("Not yet implemented"); } - */ } \ No newline at end of file diff --git a/tests/org.eclipse.ice.materials.test/src/org/eclipse/ice/materials/test/SingleMaterialWritableTableFormatTester.java b/tests/org.eclipse.ice.materials.test/src/org/eclipse/ice/materials/test/SingleMaterialWritableTableFormatTester.java index 7fc7a7e86..652c9e770 100644 --- a/tests/org.eclipse.ice.materials.test/src/org/eclipse/ice/materials/test/SingleMaterialWritableTableFormatTester.java +++ b/tests/org.eclipse.ice.materials.test/src/org/eclipse/ice/materials/test/SingleMaterialWritableTableFormatTester.java @@ -1,38 +1,45 @@ +/******************************************************************************* + * Copyright (c) 2014 UT-Battelle, LLC. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Initial API and implementation and/or initial documentation - + * Kasper Gammeltoft + *******************************************************************************/ package org.eclipse.ice.materials.test; import static org.junit.Assert.*; -import java.util.ArrayList; - import org.eclipse.ice.datastructures.form.Material; -import org.eclipse.ice.materials.MaterialWritableTableFormat; import org.eclipse.ice.materials.SingleMaterialWritableTableFormat; import org.junit.BeforeClass; import org.junit.Test; /** - * This class tests the {@link org.eclipse.ice.material.SingleMaterialWritableTableFormat} class. + * This class tests the + * {@link org.eclipse.ice.material.SingleMaterialWritableTableFormat} class. * * * * @author Kasper Gammeltoft - * + * */ public class SingleMaterialWritableTableFormatTester { - /** * Test materials */ static Material material; static Material material1; - + /** * The table format to be tested */ static SingleMaterialWritableTableFormat tableFormat; - - + /** * @throws java.lang.Exception */ @@ -45,7 +52,7 @@ public class SingleMaterialWritableTableFormatTester { material.setProperty("A", 1.0); material.setProperty("B", 2.0); material.setProperty("C", 3.0); - + material1 = new Material(); material1.setName("SomeOtherMaterial"); material1.setProperty("A", 5.0); @@ -86,7 +93,8 @@ public class SingleMaterialWritableTableFormatTester { */ @Test public void testGetColumnValue() { - assertEquals(tableFormat.getColumnValue("A", 1), material.getProperty("A")); + assertEquals(tableFormat.getColumnValue("A", 1), + material.getProperty("A")); assertEquals(tableFormat.getColumnValue("C", 0), "C"); } @@ -100,7 +108,7 @@ public class SingleMaterialWritableTableFormatTester { double newval = 15.0; tableFormat.setColumnValue("B", newval, 1); assertTrue(material.getProperty("B") == newval); - + tableFormat.setColumnValue("C", "23", 1); assertTrue(material.getProperty("C") == 23); } -- GitLab From 3a66e3054568f9119b0912a714e06740f63edbf1 Mon Sep 17 00:00:00 2001 From: Kasper Gammeltoft Date: Wed, 17 Jun 2015 09:45:29 -0400 Subject: [PATCH 17/18] Reimplemented sorting and searching feature for tables displaying the materials database information. The new search and sort now look for elements first and then their respective isotopes. Implemented the Comparable interface for Materials. Fixed bug that would crash the reflectivity model created in last commit. Signed-off-by: Kasper Gammeltoft --- .../client/widgets/ElementSourceDialog.java | 40 ++++-- .../widgets/ListComponentSectionPage.java | 4 - .../ice/datastructures/form/Material.java | 118 ++++++++++++++++-- .../MaterialsDatabaseMasterDetailsBlock.java | 23 ++-- 4 files changed, 158 insertions(+), 27 deletions(-) diff --git a/src/org.eclipse.ice.client.widgets/src/org/eclipse/ice/client/widgets/ElementSourceDialog.java b/src/org.eclipse.ice.client.widgets/src/org/eclipse/ice/client/widgets/ElementSourceDialog.java index 560d6390f..e20c73ee4 100644 --- a/src/org.eclipse.ice.client.widgets/src/org/eclipse/ice/client/widgets/ElementSourceDialog.java +++ b/src/org.eclipse.ice.client.widgets/src/org/eclipse/ice/client/widgets/ElementSourceDialog.java @@ -86,13 +86,16 @@ public class ElementSourceDialog extends Dialog { elements = source.getElements(); list.addAll(elements); - // Sorts the list according to the material names - Collections.sort(list, new Comparator() { - public int compare(Object first, Object second) { - return ((Material) first).getName().compareTo( - ((Material) second).getName()); - } - }); + // Sorts the list according to the item's comparator, if it is + // available + if (!list.isEmpty() && list.get(0) instanceof Comparable) { + Collections.sort(list, new Comparator() { + public int compare(Object first, Object second) { + return ((Comparable) first).compareTo((Comparable) second); + } + }); + } + } /* @@ -104,7 +107,7 @@ public class ElementSourceDialog extends Dialog { */ @Override protected Control createDialogArea(Composite parent) { - + // Create the composite from the parent Composite comp = (Composite) super.createDialogArea(parent); comp.setLayout(new GridLayout(1, false)); @@ -155,6 +158,12 @@ public class ElementSourceDialog extends Dialog { // Get the filter text String filterText = filter.getText().toLowerCase(); + // Checks to see if this is a search for a specific + // isotope or a element (in which case all isotopes should be + // shown through the filter). + boolean useElementName = (filterText.length() > 0 && Character + .isDigit(filterText.charAt(0))); + // Iterate over the list and pick the items to keep from the // filter text. int numRemoved = 0; @@ -168,13 +177,25 @@ public class ElementSourceDialog extends Dialog { // Finally, if the material fits the filter, make sure // it is in the list. Otherwise, // take it out of the list. - if (mat.getName().toLowerCase().startsWith(filterText)) { + + // Get whether to compare entire name or just elemental + // name. + String matName = ""; + if (useElementName) { + matName = mat.getElementalName(); + } else { + matName = mat.getName(); + } + + // If the material meets the criteria + if (matName.toLowerCase().startsWith(filterText)) { // Make sure material is in list if (!listFromTable.contains(mat)) { listFromTable.add(i - numRemoved, mat); } + // If the material does not meet the criteria } else { // Remove materials that do not fit the search @@ -184,6 +205,7 @@ public class ElementSourceDialog extends Dialog { } numRemoved++; } + } // Unlock the list diff --git a/src/org.eclipse.ice.client.widgets/src/org/eclipse/ice/client/widgets/ListComponentSectionPage.java b/src/org.eclipse.ice.client.widgets/src/org/eclipse/ice/client/widgets/ListComponentSectionPage.java index 3790e3c61..6b315a2a5 100644 --- a/src/org.eclipse.ice.client.widgets/src/org/eclipse/ice/client/widgets/ListComponentSectionPage.java +++ b/src/org.eclipse.ice.client.widgets/src/org/eclipse/ice/client/widgets/ListComponentSectionPage.java @@ -367,7 +367,6 @@ public class ListComponentSectionPage extends ICEFormPage { // Unlocks the list list.getReadWriteLock().writeLock().unlock(); table.setSelection(selected); - } } } @@ -389,9 +388,6 @@ public class ListComponentSectionPage extends ICEFormPage { public void setList(ListComponent list) { this.list = list; this.source = list.getElementSource(); - ListComponent tableList = this.table.getList(); - tableList.clear(); - tableList.addAll(list); } } \ No newline at end of file diff --git a/src/org.eclipse.ice.datastructures/src/org/eclipse/ice/datastructures/form/Material.java b/src/org.eclipse.ice.datastructures/src/org/eclipse/ice/datastructures/form/Material.java index e186131c7..581c0dde8 100644 --- a/src/org.eclipse.ice.datastructures/src/org/eclipse/ice/datastructures/form/Material.java +++ b/src/org.eclipse.ice.datastructures/src/org/eclipse/ice/datastructures/form/Material.java @@ -42,7 +42,7 @@ import javax.xml.bind.annotation.XmlRootElement; */ @XmlRootElement(name = "Material") @XmlAccessorType(XmlAccessType.FIELD) -public class Material implements Cloneable { +public class Material implements Cloneable, Comparable { /** * The name of the material. @@ -143,14 +143,15 @@ public class Material implements Cloneable { public void setProperty(String key, double value) { properties.put(key, value); } - + /** - * This operation removes a property from the material's properties list. + * This operation removes a property from the material's properties list. + * * @param key - * The name of the property that should be removed. + * The name of the property that should be removed. */ - public void removeProperty(String key){ - if(properties.containsKey(key)){ + public void removeProperty(String key) { + if (properties.containsKey(key)) { properties.remove(key); } } @@ -248,11 +249,64 @@ public class Material implements Cloneable { if (material != null && material != this) { this.name = material.name; this.size = material.size; - this.properties = new HashMap (material.properties); + this.properties = new HashMap(material.properties); this.components = new ArrayList(material.components); } } + /** + * Gets the number before the element denoting which isotope or form of an + * element or compound this material represents. + * + * @return The number of this isotope, as an int. Will return 0 if this is a + * pure element (no number preceding its name) + */ + public int getIsotopicNumber() { + // Get an empty string to build off of + String numStr = ""; + // Iterate over the characters in the name to pull out the isotope + // number. + // it is assumed that the name will follow the format xxxYy, where x is + // a digit and y is a letter. + for (int i = 0; i < name.length(); i++) { + if (Character.isDigit(name.charAt(i))) { + numStr += name.charAt(i); + } else { + break; + } + } + // Get the isotope number in int form. If no x values in name, return 0. + int retVal; + if (numStr.equals("")) { + retVal = 0; + } else { + retVal = Integer.parseInt(numStr); + } + return retVal; + } + + /** + * Gets the elemental or compound name for this material. Note- this will + * return the same string for two isotopes of the same element. + * + * @return A String containing the name of the element or compound that this + * material represents. + */ + public String getElementalName() { + // A string to build on + String nameStr = ""; + // Iterate over the name of the material, it is assumed that the + // name follow the form xxxYy, where x is a digit and y is a letter. + for (int i = name.length() - 1; i >= 0; i--) { + if (Character.isLetter(name.charAt(i))) { + nameStr = name.charAt(i) + nameStr; + } else { + break; + } + } + return nameStr; + } + /** * This operation clones the material and creates a completely new material * with the same information. @@ -266,4 +320,54 @@ public class Material implements Cloneable { return clone; } + /** + * This operation compares materials so that they may be sorted when in + * lists. Implements the Comparable interface. Uses only the material's + * names, as these should be the best unique identifiers for sorting. + * + * @param otherMaterial + * The other material to be compared. Will return 0 if this is + * not a material object or a subclass! + * @return Returns a value less than one if it is to be closer to index 0 + * than the other material. Returns a value of exactly 0 if it is + * equal to the other material. Finally, returns a value of greater + * than one if it is to be further from index 0 than the other + * material. + */ + @Override + public int compareTo(Object otherMaterial) { + + int returnVal = 0; + + // The name of the element or compound for the two materials + String thisElement = getElementalName(); + String otherElement = ((Material) otherMaterial).getElementalName(); + + // The isotopic numbers for the two materials + int thisNum = getIsotopicNumber(); + int otherNum = ((Material) otherMaterial).getIsotopicNumber(); + + // Dealing with the same element, sort by isotope number + if (thisElement.toLowerCase().equals(otherElement.toLowerCase())) { + + // Sort from lower isotopic number to greater + if (thisNum < otherNum) { + returnVal = -1; + } else if (thisNum > otherNum) { + returnVal = 1; + } else { + returnVal = 0; + } + + // Dealing with different elements, sort by name. + } else { + returnVal = thisElement.toLowerCase().compareTo( + otherElement.toLowerCase()); + } + + // Return the sorting value for these two Materials + return returnVal; + + } + } diff --git a/src/org.eclipse.ice.materials.ui/src/org/eclipse/ice/materials/ui/MaterialsDatabaseMasterDetailsBlock.java b/src/org.eclipse.ice.materials.ui/src/org/eclipse/ice/materials/ui/MaterialsDatabaseMasterDetailsBlock.java index 2929bbd46..77e703fa3 100644 --- a/src/org.eclipse.ice.materials.ui/src/org/eclipse/ice/materials/ui/MaterialsDatabaseMasterDetailsBlock.java +++ b/src/org.eclipse.ice.materials.ui/src/org/eclipse/ice/materials/ui/MaterialsDatabaseMasterDetailsBlock.java @@ -151,12 +151,8 @@ public class MaterialsDatabaseMasterDetailsBlock extends MasterDetailsBlock { // Create a sorted final list from the database for pulling the database // information materials = materialsDatabase.getMaterials(); - // Sorts the list according to the material names - Collections.sort(materials, new Comparator() { - public int compare(Material first, Material second) { - return (first.getName().compareTo(second.getName())); - } - }); + // Sorts the list according to the material compareTo operator + Collections.sort(materials); // Create a copy of the master list for the table to display. List editableCopy = new ArrayList(); @@ -178,16 +174,29 @@ public class MaterialsDatabaseMasterDetailsBlock extends MasterDetailsBlock { // Get the filter text String filterText = filter.getText().toLowerCase(); + // Checks to see if this is a search for a specific + // isotope or a element (in which case all isotopes should be + // shown through the filter). + boolean useElementName = (filterText.length() > 0 && Character + .isDigit(filterText.charAt(0))); + // Iterate over the list and pick the items to keep from the // filter text. int numRemoved = 0; for (int i = 0; i < materials.size(); i++) { Material mat = materials.get(i); + + String matName = ""; + if (useElementName) { + matName = mat.getElementalName(); + } else { + matName = mat.getName(); + } // Finally, if the material fits the filter, make sure it is // in the list. Otherwise, // take it out of the list. - if (mat.getName().toLowerCase().startsWith(filterText)) { + if (matName.toLowerCase().startsWith(filterText)) { // make sure material is in list if (!listFromTree.contains(mat)) { listFromTree.add(i - numRemoved, mat); -- GitLab From 40790b24eee57456f2c31641005d730ee1a8fd67 Mon Sep 17 00:00:00 2001 From: Kasper Gammeltoft Date: Wed, 17 Jun 2015 12:36:22 -0400 Subject: [PATCH 18/18] Implemented add, delete, and reset buttons for the materials database. Still need to work on the add dialog. Signed-off-by: Kasper Gammeltoft --- .../ice/materials/ui/AddMaterialWizard.java | 42 +++++++- .../materials/ui/AddMaterialWizardPage.java | 69 ++++++++++++- .../MaterialsDatabaseMasterDetailsBlock.java | 99 +++++++++++++++---- 3 files changed, 185 insertions(+), 25 deletions(-) diff --git a/src/org.eclipse.ice.materials.ui/src/org/eclipse/ice/materials/ui/AddMaterialWizard.java b/src/org.eclipse.ice.materials.ui/src/org/eclipse/ice/materials/ui/AddMaterialWizard.java index c21804bb6..1e810918c 100644 --- a/src/org.eclipse.ice.materials.ui/src/org/eclipse/ice/materials/ui/AddMaterialWizard.java +++ b/src/org.eclipse.ice.materials.ui/src/org/eclipse/ice/materials/ui/AddMaterialWizard.java @@ -12,6 +12,7 @@ package org.eclipse.ice.materials.ui; import org.eclipse.core.commands.IHandler; +import org.eclipse.ice.datastructures.form.Material; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.wizard.Wizard; import org.eclipse.ui.INewWizard; @@ -23,7 +24,7 @@ import org.eclipse.ui.IWorkbenchWindow; * materials database. * * @author Jay Jay Billings - * + * */ public class AddMaterialWizard extends Wizard implements INewWizard { @@ -32,6 +33,11 @@ public class AddMaterialWizard extends Wizard implements INewWizard { */ private AddMaterialWizardPage page; + /** + * The material that was constructed from the wizard + */ + private Material materialFromPage; + /** * The workbench window used by the wizard. */ @@ -56,6 +62,10 @@ public class AddMaterialWizard extends Wizard implements INewWizard { this(); // Store a reference to the workbench window. workbenchWindow = window; + + // Turn off extra buttons we do not need + this.setForcePreviousAndNextButtons(false); + this.setHelpAvailable(false); } /* @@ -82,6 +92,25 @@ public class AddMaterialWizard extends Wizard implements INewWizard { workbenchWindow = workbench.getActiveWorkbenchWindow(); } + /** + * Gets the material created by this wizard + * + * @return The new material to add to the database + */ + public Material getMaterial() { + return materialFromPage; + } + + /* + * (non-Javadoc) + * + * @see org.eclipse.jface.wizard.Wizard#canFinish() + */ + @Override + public boolean canFinish() { + return page.isPageComplete(); + } + /* * (non-Javadoc) * @@ -89,8 +118,15 @@ public class AddMaterialWizard extends Wizard implements INewWizard { */ @Override public boolean performFinish() { - // TODO Auto-generated method stub - return false; + boolean finished; + + if (canFinish()) { + finished = true; + materialFromPage = page.getMaterial(); + } else { + finished = false; + } + return finished; } } diff --git a/src/org.eclipse.ice.materials.ui/src/org/eclipse/ice/materials/ui/AddMaterialWizardPage.java b/src/org.eclipse.ice.materials.ui/src/org/eclipse/ice/materials/ui/AddMaterialWizardPage.java index f566eb9b6..0e6116e78 100644 --- a/src/org.eclipse.ice.materials.ui/src/org/eclipse/ice/materials/ui/AddMaterialWizardPage.java +++ b/src/org.eclipse.ice.materials.ui/src/org/eclipse/ice/materials/ui/AddMaterialWizardPage.java @@ -11,10 +11,15 @@ *******************************************************************************/ package org.eclipse.ice.materials.ui; +import java.util.List; + +import org.eclipse.ice.datastructures.form.Material; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.jface.wizard.WizardPage; import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.events.ModifyEvent; +import org.eclipse.swt.events.ModifyListener; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Table; @@ -75,6 +80,50 @@ public class AddMaterialWizardPage extends WizardPage { super(pageName, title, titleImage); } + /** + * Returns if the material page's necessary fields are complete. + * + * @return Returns true if the name field and the density field have valid + * values. + */ + @Override + public boolean isPageComplete() { + boolean hasName = nameText.getText().length() > 0; + boolean density; + try { + Double d = Double.parseDouble(densityText.getText()); + density = true; + } catch (Exception e) { + density = false; + } + return hasName && density; + } + + /** + * Gets the material created by the fields on this page. + * + * @return A new material with the set name, density and stoichiometry + * denoted on the page. + */ + public Material getMaterial() { + // Creates the new material + Material material = new Material(); + // Set the name + material.setName(nameText.getText()); + // Set the density + material.setProperty("Dens (g/cm3)", + Double.parseDouble(densityText.getText())); + + /** + * // Set the material's components from the stoichiometery + * List components = (List) this.stoichiometryTable + * .getData(); // See if there are components to add + * if(!components.isEmpty()){ for (Material m : components) { + * material.addComponent(m); } } + */ + return material; + } + /* * (non-Javadoc) * @@ -121,7 +170,7 @@ public class AddMaterialWizardPage extends WizardPage { SWT.NONE); densityComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false, 1, 1)); - densityComposite.setLayout(new GridLayout(2, false)); + densityComposite.setLayout(new GridLayout(3, false)); Label densityLabel = new Label(densityComposite, SWT.NONE); densityLabel.setText("Density:"); @@ -130,6 +179,24 @@ public class AddMaterialWizardPage extends WizardPage { densityText.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1)); + Label densityUnitsLabel = new Label(densityComposite, SWT.NONE); + densityUnitsLabel.setText("g/cm3"); + + // Add a modify listener to update the buttons in the wizard if the text + // fields change. + ModifyListener listener = new ModifyListener() { + + @Override + public void modifyText(ModifyEvent arg0) { + getWizard().getContainer().updateButtons(); + } + + }; + + // Add the listener + nameText.addModifyListener(listener); + densityText.addModifyListener(listener); + Composite stoichiometryComposite = new Composite(container, SWT.NONE); stoichiometryComposite.setLayout(new GridLayout(2, false)); stoichiometryComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, diff --git a/src/org.eclipse.ice.materials.ui/src/org/eclipse/ice/materials/ui/MaterialsDatabaseMasterDetailsBlock.java b/src/org.eclipse.ice.materials.ui/src/org/eclipse/ice/materials/ui/MaterialsDatabaseMasterDetailsBlock.java index 77e703fa3..9836e0453 100644 --- a/src/org.eclipse.ice.materials.ui/src/org/eclipse/ice/materials/ui/MaterialsDatabaseMasterDetailsBlock.java +++ b/src/org.eclipse.ice.materials.ui/src/org/eclipse/ice/materials/ui/MaterialsDatabaseMasterDetailsBlock.java @@ -15,6 +15,7 @@ package org.eclipse.ice.materials.ui; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; +import java.util.Iterator; import java.util.List; import org.eclipse.core.runtime.Platform; @@ -24,9 +25,11 @@ import org.eclipse.ice.datastructures.form.Material; import org.eclipse.ice.materials.IMaterialsDatabase; import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.jface.viewers.ISelectionChangedListener; +import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.viewers.SelectionChangedEvent; import org.eclipse.jface.viewers.TableViewer; import org.eclipse.jface.viewers.TreeViewer; +import org.eclipse.jface.window.Window; import org.eclipse.jface.wizard.Wizard; import org.eclipse.jface.wizard.WizardDialog; import org.eclipse.swt.SWT; @@ -177,8 +180,8 @@ public class MaterialsDatabaseMasterDetailsBlock extends MasterDetailsBlock { // Checks to see if this is a search for a specific // isotope or a element (in which case all isotopes should be // shown through the filter). - boolean useElementName = (filterText.length() > 0 && Character - .isDigit(filterText.charAt(0))); + boolean useElementName = !((filterText.length() > 0) && (Character + .isDigit(filterText.charAt(0)))); // Iterate over the list and pick the items to keep from the // filter text. @@ -247,28 +250,37 @@ public class MaterialsDatabaseMasterDetailsBlock extends MasterDetailsBlock { // Create the Add button Button addMaterialButton = new Button(buttonComposite, SWT.PUSH); addMaterialButton.setText("Add"); - // Create a wizard dialog to hold the AddMaterialWizard that will be - // used to create new materials. - IWorkbenchWindow window = PlatformUI.getWorkbench() - .getActiveWorkbenchWindow(); - AddMaterialWizard addMaterialWizard = new AddMaterialWizard(window); - addMaterialWizard.setWindowTitle("Create a new material"); - final WizardDialog addMaterialDialog = new WizardDialog( - window.getShell(), addMaterialWizard); + // Add a listener to the add button to open the Add Material Wizard addMaterialButton.addSelectionListener(new SelectionListener() { @Override public void widgetSelected(SelectionEvent e) { - // Just pop open the dialog - addMaterialDialog.create(); - addMaterialDialog.open(); + // Create a wizard dialog to hold the AddMaterialWizard that will be + // used to create new materials. + IWorkbenchWindow window = PlatformUI.getWorkbench() + .getActiveWorkbenchWindow(); + AddMaterialWizard addMaterialWizard = new AddMaterialWizard(window); + addMaterialWizard.setWindowTitle("Create a new material"); + WizardDialog addMaterialDialog = new WizardDialog( + window.getShell(), addMaterialWizard); + + // Get the new material to add + if(addMaterialDialog.open() == Window.OK){ + Material newMaterial = addMaterialWizard.getMaterial(); + materialsDatabase.addMaterial(newMaterial); + materials.add(newMaterial); + List listFromTree = (List) treeViewer + .getInput(); + listFromTree.add(newMaterial); + Collections.sort(listFromTree); + treeViewer.refresh(); + } + } @Override public void widgetDefaultSelected(SelectionEvent e) { - // Just pop open the dialog - addMaterialDialog.create(); - addMaterialDialog.open(); + // Nothing TODO } }); @@ -280,7 +292,7 @@ public class MaterialsDatabaseMasterDetailsBlock extends MasterDetailsBlock { // a simple JFace message dialog that is opened when either button // is pressed. String title = "Confirm Deletion"; - String msg = "Are you sure you want to delete this material?"; + String msg = "Are you sure you want to delete this material(s)?"; String[] labels = { "OK", "Cancel" }; final MessageDialog deletionDialog = new MessageDialog( parent.getShell(), title, null, msg, MessageDialog.WARNING, @@ -289,13 +301,37 @@ public class MaterialsDatabaseMasterDetailsBlock extends MasterDetailsBlock { @Override public void widgetSelected(SelectionEvent e) { int index = deletionDialog.open(); - // Do the deletion - NOT YET IMPLEMENTED! + // If the user presses OK + if (index == 0) { + // Get the currently selected materials + IStructuredSelection selection = (IStructuredSelection) treeViewer + .getSelection(); + Iterator it = selection.iterator(); + + // Get the model from the treeViewer + List listFromTree = (List) treeViewer + .getInput(); + + // Remove each selected material + while (it.hasNext()) { + Material toDelete = (Material) it.next(); + // Remove the material from the user's database + materialsDatabase.deleteMaterial(toDelete); + // Remove from the master materials list + materials.remove(toDelete); + // Remove the material from the tree viewer + listFromTree.remove(toDelete); + } + + // Update the treeViwer so that it repaints and shows the + // changes on screen. + treeViewer.refresh(); + } } @Override public void widgetDefaultSelected(SelectionEvent e) { - int index = deletionDialog.open(); - // Do the deletion - NOT YET IMPLEMENTED! + // nothing TODO } }; deleteMaterialButton.addSelectionListener(deletionListener); @@ -321,7 +357,28 @@ public class MaterialsDatabaseMasterDetailsBlock extends MasterDetailsBlock { @Override public void widgetSelected(SelectionEvent e) { int index = restoreDialog.open(); - // Do the restore - NOT YET IMPLEMENTED! + if (index == 0) { + materialsDatabase.restoreDefaults(); + // Create a sorted final list from the database for pulling + // the database information + materials = materialsDatabase.getMaterials(); + // Sorts the list according to the material compareTo + // operator + Collections.sort(materials); + + // Get the model from the treeViewer + List listFromTree = (List) treeViewer + .getInput(); + // Refresh the list from the reset materials database + listFromTree.clear(); + for (int i = 0; i < materials.size(); i++) { + listFromTree.add(materials.get(i)); + } + + // Update the treeViwer so that it repaints and shows the + // changes on screen. + treeViewer.refresh(); + } } @Override -- GitLab