Skip to content

Commit

Permalink
Merge pull request #979 from oscargus/singlebibtexfield
Browse files Browse the repository at this point in the history
Refactored Singlebibtexfield
  • Loading branch information
simonharrer committed Mar 17, 2016
2 parents 67ae095 + 1b52e4c commit 4a34791
Show file tree
Hide file tree
Showing 9 changed files with 299 additions and 313 deletions.
167 changes: 167 additions & 0 deletions src/main/java/net/sf/jabref/bibtex/BibtexSingleField.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,167 @@
package net.sf.jabref.bibtex;

import java.util.EnumSet;
import java.util.Set;

/**
*
* Class for keeping properties of a single BibTeX/BibLatex field
*
*/
public class BibtexSingleField {

// some field constants
public static final double DEFAULT_FIELD_WEIGHT = 1;
public static final double MAX_FIELD_WEIGHT = 2;

public static final double SMALL_W = 0.30;
public static final double MEDIUM_W = 0.5;
public static final double LARGE_W = 1.5;

public static final int DEFAULT_FIELD_LENGTH = 100;


private enum Flag {
STANDARD,
PRIVATE,
DISPLAYABLE,
WRITEABLE;
}


// the field name
private final String name;

// contains the standard, private, displayable, writable infos
// default is: not standard, public, displayable and writable
private final Set<Flag> flags = EnumSet.of(Flag.DISPLAYABLE, Flag.WRITEABLE);

private int length = DEFAULT_FIELD_LENGTH;
private double weight = DEFAULT_FIELD_WEIGHT;

// the extras data
// fieldExtras contains mappings to tell the EntryEditor to add a specific
// function to this field, for instance a "browse" button for the "pdf" field.
private Set<BibtexSingleFieldProperties> extras = EnumSet.noneOf(BibtexSingleFieldProperties.class);

// a comma separated list of alternative bibtex-fieldnames, e.g.
// "LCCN" is the same like "lib-congress"
// private String otherNames = null ;

public BibtexSingleField(String fieldName, boolean pStandard) {
name = fieldName;
setFlag(pStandard, Flag.STANDARD);
}

public BibtexSingleField(String fieldName, boolean pStandard, double pWeight) {
name = fieldName;
setFlag(pStandard, Flag.STANDARD);
weight = pWeight;
}

public BibtexSingleField(String fieldName, boolean pStandard, int pLength) {
name = fieldName;
setFlag(pStandard, Flag.STANDARD);
length = pLength;
}

public BibtexSingleField(String fieldName, boolean pStandard, double pWeight, int pLength) {
name = fieldName;
setFlag(pStandard, Flag.STANDARD);
weight = pWeight;
length = pLength;
}

/**
* Sets or onsets the given flag
* @param setToOn if true, set the flag; if false, unset the flat
* @param flagID, the id of the flag
*/
private void setFlag(boolean setToOn, Flag flagID) {
if (setToOn) {
// set the flag
flags.add(flagID);
} else {
// unset the flag
flags.remove(flagID);
}
}

public boolean isStandard() {
return flags.contains(Flag.STANDARD);
}

public void setPrivate() {
flags.add(Flag.PRIVATE);
}

public boolean isPrivate() {
return flags.contains(Flag.PRIVATE);
}

public void setDisplayable(boolean value) {
setFlag(value, Flag.DISPLAYABLE);
}

public boolean isDisplayable() {
return flags.contains(Flag.DISPLAYABLE);
}

public void setWriteable(boolean value) {
setFlag(value, Flag.WRITEABLE);
}

public boolean isWriteable() {
return flags.contains(Flag.WRITEABLE);
}

public void setExtras(Set<BibtexSingleFieldProperties> pExtras) {
extras = pExtras;
}

// fieldExtras contains mappings to tell the EntryEditor to add a specific
// function to this field, for instance a "browse" button for the "pdf" field.
public Set<BibtexSingleFieldProperties> getExtras() {
return extras;
}

public void setWeight(double value) {
this.weight = value;
}

public double getWeight() {
return this.weight;
}

/**
* @return The maximum (expected) length of the field value; <em>not</em> the length of the field name
*/
public int getLength() {
return this.length;
}

public String getFieldName() {
return name;
}

/**
* Set this field's numeric property
*
* @param numeric true to indicate that this is a numeric field.
* @return this BibtexSingleField instance. Makes it easier to call this
* method on the fly while initializing without using a local variable.
*/
public BibtexSingleField setNumeric(boolean numeric) {
if (numeric) {
extras.add(BibtexSingleFieldProperties.NUMERIC);
} else {
extras.remove(BibtexSingleFieldProperties.NUMERIC);
}
return this;
}

public boolean isNumeric() {
return extras.contains(BibtexSingleFieldProperties.NUMERIC);
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package net.sf.jabref.bibtex;

import java.util.EnumSet;

public enum BibtexSingleFieldProperties {
YES_NO,
URL,
DATEPICKER,
JOURNAL_NAMES,
EXTERNAL,
BROWSE,
SET_OWNER,
MONTH,
FILE_EDITOR,
NUMERIC;

public static final EnumSet<BibtexSingleFieldProperties> ALL_OPTS = EnumSet
.allOf(BibtexSingleFieldProperties.class);

}
7 changes: 4 additions & 3 deletions src/main/java/net/sf/jabref/gui/FieldWeightDialog.java
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@
import com.jgoodies.forms.builder.DefaultFormBuilder;
import com.jgoodies.forms.layout.FormLayout;

import net.sf.jabref.bibtex.BibtexSingleField;
import net.sf.jabref.logic.l10n.Localization;
import net.sf.jabref.model.entry.BibEntry;

Expand Down Expand Up @@ -77,8 +78,8 @@ private JPanel buildMainPanel() {

for (String field : fields) {
builder.append(field);
int weight = (int) ((100 * InternalBibtexFields.getFieldWeight(field)) / GUIGlobals.MAX_FIELD_WEIGHT);
//System.out.println(weight);
int weight = (int) ((100 * InternalBibtexFields.getFieldWeight(field))
/ BibtexSingleField.MAX_FIELD_WEIGHT);
JSlider slider = new JSlider(0, 100, weight);//,);
sliders.put(slider, new SliderInfo(field, weight));
builder.append(slider);
Expand Down Expand Up @@ -120,7 +121,7 @@ private void storeSettings() {
SliderInfo sInfo = sliders.get(slider);
// Only list the value if it has changed:
if (sInfo.originalValue != slider.getValue()) {
double weight = (GUIGlobals.MAX_FIELD_WEIGHT * slider.getValue()) / 100d;
double weight = (BibtexSingleField.MAX_FIELD_WEIGHT * slider.getValue()) / 100d;
InternalBibtexFields.setFieldWeight(sInfo.fieldName, weight);
}
}
Expand Down
12 changes: 0 additions & 12 deletions src/main/java/net/sf/jabref/gui/GUIGlobals.java
Original file line number Diff line number Diff line change
Expand Up @@ -92,20 +92,9 @@ public class GUIGlobals {
public static Color activeBackground;
public static Color invalidFieldBackgroundColor;

// some fieldname constants
public static final double DEFAULT_FIELD_WEIGHT = 1;
public static final double MAX_FIELD_WEIGHT = 2;

// constants for editor types:
public static final int STANDARD_EDITOR = 1;
public static final int FILE_LIST_EDITOR = 2;

public static final int MAX_BACK_HISTORY_SIZE = 10; // The maximum number of "Back" operations stored.

public static final double SMALL_W = 0.30;
public static final double MEDIUM_W = 0.5;
public static final double LARGE_W = 1.5;

public static final double PE_HEIGHT = 2;

// Size constants for EntryTypeForm; small, medium and large.
Expand All @@ -116,7 +105,6 @@ public class GUIGlobals {
public static final int INDENT = 4;
public static final int LINE_LENGTH = 65; // Maximum

public static final int DEFAULT_FIELD_LENGTH = 100;
public static final int NUMBER_COL_LENGTH = 32;

public static final int WIDTH_ICON_COL_RANKING = 80; // Width of Ranking Icon Column
Expand Down
Loading

0 comments on commit 4a34791

Please sign in to comment.