Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,12 @@ public class MagneticFields {
// which field is active
private IMagField _activeField;

// whether the active field is a torus:
private boolean _hasActiveTorus = false;

// whether the active field is a solenoid:
private boolean _hasActiveSolenoid = false;

// types of fields
public enum FieldType {
TORUS, SOLENOID, COMPOSITE, COMPOSITEROTATED, ZEROFIELD
Expand Down Expand Up @@ -181,7 +187,7 @@ protected void openNewTorus(String path) throws FileNotFoundException {
_torus = readTorus(path);

if (activeFieldWasTorus) {
_activeField = _torus;
setActiveField(_torus);
}

if (_torus != null) {
Expand Down Expand Up @@ -266,7 +272,7 @@ protected void openSolenoid(File file, boolean isTransverse) throws FileNotFound
_solenoid = readSolenoid(file.getAbsolutePath(), isTransverse);

if (activeFieldWasSolenoid) {
_activeField = _solenoid;
setActiveField(_solenoid);
}

if (_solenoid != null) {
Expand Down Expand Up @@ -479,13 +485,72 @@ private String sysPropOrEnvVar(String key) {
return s;
}

private boolean getActiveTorus() {

if (_activeField != null) {
if (_activeField instanceof Torus) {
return true;
} else if (_activeField instanceof TorusProbe) {
return true;
} else if (_activeField instanceof CompositeProbe) {
return ((CompositeProbe) _activeField).hasTorus();
} else if (_activeField instanceof CompositeField) {
return ((CompositeField) _activeField).hasTorus();
}
}

return false;
}

private boolean getActiveSolenoid() {
if (_activeField != null) {
if (_activeField instanceof Solenoid) {
return true;
} else if (_activeField instanceof SolenoidProbe) {
return true;
} else if (_activeField instanceof CompositeProbe) {
return ((CompositeProbe) _activeField).hasSolenoid();
} else if (_activeField instanceof CompositeField) {
return ((CompositeField) _activeField).hasSolenoid();
}
}

return false;
}

/**
* Check whether we have an active torus field
*
* @return <code>true</code> if we have a torus
*/
public boolean hasActiveTorus() {
return _hasActiveTorus;
}

/**
* Check whether we have an active solenoid field
*
* @return <code>true</code> if we have a solenoid
*/
public boolean hasActiveSolenoid() {
return _hasActiveSolenoid;
}

/**
* Sets the active field
*
* @param field the new active field
*/
public void setActiveField(IMagField field) {
_activeField = field;
_hasActiveTorus = getActiveTorus();
_hasActiveSolenoid = getActiveSolenoid();
}

private void resetActiveField() {
_activeField = null;
_hasActiveTorus = false;
_hasActiveSolenoid = false;
}

/**
Expand All @@ -500,18 +565,28 @@ public void setActiveField(FieldType ftype) {
switch (ftype) {
case TORUS:
_activeField = _torus;
_hasActiveTorus = true;
_hasActiveSolenoid = false;
break;
case SOLENOID:
_activeField = _solenoid;
_hasActiveTorus = false;
_hasActiveSolenoid = true;
break;
case COMPOSITE:
_activeField = _compositeField;
_hasActiveTorus = _compositeField.hasTorus();
_hasActiveSolenoid = _compositeField.hasSolenoid();
break;
case COMPOSITEROTATED:
_activeField = _rotatedCompositeField;
_hasActiveTorus = _rotatedCompositeField.hasTorus();
_hasActiveSolenoid = _rotatedCompositeField.hasSolenoid();
break;
case ZEROFIELD:
_activeField = null;
_hasActiveTorus = false;
_hasActiveSolenoid = false;
break;
}

Expand Down Expand Up @@ -1019,21 +1094,19 @@ private void makeComposites() {
}

// set the default active field
_activeField = null;
resetActiveField();
if ((_torus != null) && (_solenoid != null)) {
_activeField = _compositeField;
setActiveField(_compositeField);
}
else if ((_torus != null) && (_solenoid != null)) {
_activeField = _compositeField;
setActiveField(_compositeField);
}

else if (_torus != null) {
_activeField = _torus;
setActiveField(_torus);
}
else if (_solenoid != null) {
_activeField = _solenoid;
setActiveField(_solenoid);
}

}

// final initialziation
Expand Down Expand Up @@ -1134,19 +1207,19 @@ private void handleMenuSelection(ActionEvent ae) {
Object source = ae.getSource();

if (source == _torusItem) {
_activeField = _torus;
setActiveField(_torus);
}
else if (source == _solenoidItem) {
_activeField = _solenoid;
setActiveField(_solenoid);
}
else if (source == _bothItem) {
_activeField = _compositeField;
setActiveField(_compositeField);
}
else if ((_bothRotatedItem != null) && (source == _bothRotatedItem)) {
_activeField = _rotatedCompositeField;
setActiveField(_rotatedCompositeField);
}
else if (source == _zeroItem) {
_activeField = null;
resetActiveField();
}
else if (source == _interpolateItem) {
MagneticField.setInterpolate(true);
Expand Down Expand Up @@ -1379,49 +1452,6 @@ public void removeMapOverlap() {
notifyListeners();
}

/**
* Check whether we have an active torus field
*
* @return <code>true</code> if we have a torus
*/
public boolean hasActiveTorus() {

if (_activeField != null) {
if (_activeField instanceof Torus) {
return true;
} else if (_activeField instanceof TorusProbe) {
return true;
} else if (_activeField instanceof CompositeProbe) {
return ((CompositeProbe) _activeField).hasTorus();
} else if (_activeField instanceof CompositeField) {
return ((CompositeField) _activeField).hasTorus();
}
}

return false;
}

/**
* Check whether we have an active solenoid field
*
* @return <code>true</code> if we have a solenoid
*/
public boolean hasActiveSolenoid() {
if (_activeField != null) {
if (_activeField instanceof Solenoid) {
return true;
} else if (_activeField instanceof SolenoidProbe) {
return true;
} else if (_activeField instanceof CompositeProbe) {
return ((CompositeProbe) _activeField).hasSolenoid();
} else if (_activeField instanceof CompositeField) {
return ((CompositeField) _activeField).hasSolenoid();
}
}

return false;
}

/**
* Get the torus field
*
Expand Down